You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 07:54:22