AWS Lambda配置未更新,如何让Elemental MediaConvert仅生成3个HLS码率?
解决仅生成3种HLS码率的问题
看起来你已经找对了调整方向,但可能在代码部署或配置逻辑上有遗漏,我来帮你一步步排查和解决:
1. 先确认Lambda的修改是否真的生效了
这是最容易忽略的细节:
- 打开AWS Lambda控制台,找到你的视频处理函数
- 进入「代码」标签页,确认你修改后的预设数组(比如存储码率预设的变量)确实只保留了3个值,而非6个
- 务必点击页面右上角的「部署」按钮——Lambda代码编辑后只有部署才会生效,单纯保存不会触发更新
- 如果你是用CloudFormation/SAM模板部署的这套工作流,直接在控制台修改Lambda代码会被后续的模板部署覆盖,这时候你需要修改模板里的Lambda代码部分,再重新部署整个堆栈
2. 修正Lambda中的MediaConvert任务配置逻辑
原博客的Lambda代码应该是通过预设数组来生成MediaConvert的输出配置,你需要确保修改覆盖了所有相关逻辑:
- 找到代码中定义预设的部分,比如类似这样的数组:
// 修改前(6个预设) const hlsPresets = [ 'System-Avc_1080p', 'System-Avc_720p', 'System-Avc_540p', 'System-Avc_480p', 'System-Avc_360p', 'System-Avc_240p' ]; // 修改后(保留3个你需要的) const hlsPresets = [ 'System-Avc_1080p', 'System-Avc_720p', 'System-Avc_480p' ]; - 确认代码中是循环这个数组来生成MediaConvert的Outputs——如果是硬编码了6个Output对象,那只改数组没用,得直接删除多余的3个Output定义
3. 检查是否依赖了MediaConvert的Job模板
有些情况下,Lambda可能不是动态生成输出配置,而是引用了MediaConvert的自定义Job模板:
- 查看Lambda代码中是否有
JobTemplate参数,比如:const mediaConvertParams = { JobTemplate: 'MyVODWorkflowTemplate', Role: process.env.MEDIACONVERT_ROLE, // 其他参数... }; - 如果有这个参数,登录MediaConvert控制台,找到对应的Job模板,进入编辑模式:
- 找到「输出组」下的HLS输出配置
- 删除多余的3个码率输出,只保留你需要的3个
- 保存模板后再测试上传
4. 验证修改效果
- 上传一个小体积的测试视频到源S3存储桶
- 等待Lambda触发MediaConvert任务后,去MediaConvert控制台查看该任务的「输出」标签,确认只有3种码率的文件生成
- 如果还是有问题,打开Lambda的CloudWatch日志,搜索
jobSettings或outputGroups关键词,查看传递给MediaConvert的参数是否正确——如果日志里显示的还是6个输出,说明Lambda代码没生效;如果日志里是3个但实际输出6个,那大概率是MediaConvert模板的问题
内容的提问来源于stack exchange,提问作者user185955




