Lambda调用MediaConvert转码后,输出文件未写入指定S3桶求助
问题:Lambda触发MediaConvert转码后无输出文件
我用Lambda+MediaConvert搭建VOD转码系统,配置了S3源桶上传文件触发Lambda,Lambda调用MediaConvert将文件转码为HLS格式,预期输出到指定S3桶。测试时create_job返回201状态码,但输出桶里完全没文件。已经给Lambda和MediaConvert配了所有需要的权限,折腾两天还是找不到问题。
Lambda函数代码片段
jobMetadata = {'assetId': resourceKey} print(json.dumps(event)) try: with open('job.json') as json_data: jobSettings = json.load(json_data) print(jobSettings) mc_client = boto3.client('mediaconvert', region_name=region) endpoints = mc_client.describe_endpoints() client = boto3.client('mediaconvert', region_name=region, endpoint_url=endpoints['Endpoints'][0]['Url'], verify=False) jobSettings['Inputs'][0]['FileInput'] = originS3Path /////some path definition/// print('jobSettings:') print(json.dumps(jobSettings)) job = client.create_job(Role=mediaConvertRole, UserMetadata=jobMetadata, Settings=jobSettings) print(json.dumps(job, default=str))
CloudWatch日志片段
{"ResponseMetadata": {"RequestId": "5a2ce993-3295-4ae8-93f4-04cd2829694e", "HTTPStatusCode": 201, .....
Lambda角色权限配置
Lambda已附加AmazonS3FullAccess、AWSLambdaBasicExecutionRole,并添加以下内联策略:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*", "Effect": "Allow", "Sid": "Logging" }, { "Action": [ "iam:PassRole" ], "Resource": [ "my role arn" ], "Effect": "Allow", "Sid": "PassRole" }, { "Action": [ "mediaconvert:*" ], "Resource": [ "*" ], "Effect": "Allow", "Sid": "MediaConvertService" }, { "Action": [ "s3:*" ], "Resource": [ "*" ], "Effect": "Allow", "Sid": "S3Service" } ] }
排查方向
- 查MediaConvert作业状态:从Lambda日志里提取作业ID,去MediaConvert控制台找对应作业,看是成功、失败还是挂起。失败的话直接看错误详情,比如源路径错、输出路径配置问题、源文件格式不支持。
- 核对输出路径配置:检查
job.json里的OutputGroups,确保Destination是正确的S3路径(格式为s3://bucket-name/path/,末尾斜杠不能少)。 - 验证源文件路径:确认
originS3Path格式是s3://bucket-name/object-key,无拼写错误;同时要确认MediaConvert的执行角色(不是Lambda角色)有读取该S3对象的权限。 - 检查MediaConvert执行角色权限:这个角色需要有读取源S3桶、写入输出S3桶的权限,还要能写CloudWatch日志记录作业状态。
- 看完整日志:把Lambda打印的
jobSettings完整内容导出,确认输入输出路径、转码参数都正确;另外直接看MediaConvert作业的CloudWatch日志,里面的报错信息更精准。 - 检查S3桶配置:输出桶有没有桶策略阻止写入?是否开启了版本控制导致文件被隐藏?
- 确认区域一致性:Lambda、MediaConvert、源/输出S3桶要在同一个区域,跨区域会有额外权限或配置要求。
内容的提问来源于stack exchange,提问作者Taylor
相关产品推荐
相关产品推荐

