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

AWS MediaConvert API调用报错‘Cross-account pass role is not allowed’问题排查求助

AWS MediaConvert API调用报错‘Cross-account pass role is not allowed’问题排查求助

看起来你遇到的这个跨账号角色传递报错有点让人困惑,毕竟你确认了用户和MediaConvert都在同一个AWS账号下。咱们一步步拆解可能的问题点:

1. 先修正代码里的区域配置错误(可能是核心问题!)

我注意到你代码里的region参数写的是us-east-3,但endpoint却是us-east-2的地址——AWS目前并没有us-east-3这个区域,这会导致客户端配置混乱,请求可能被路由到错误的位置,进而触发奇怪的权限报错。

请把region改成us-east-2,和endpoint保持一致:

$client = new MediaConvertClient([
    'version' => "2017-08-29",
    'region' => 'us-east-2', // 修正为正确的区域
    'credentials' => new Credentials('xxxxxxxxx', 'xxxxxxxxx'),
    'endpoint' => "https://xxxxx.mediaconvert.us-east-2.amazonaws.com",
]);

2. 检查MediaConvert角色的信任关系是否正确

你提到尝试把用户加到角色的信任关系里,但其实不需要直接添加用户——MediaConvert是由AWS服务来扮演这个角色的,正确的信任策略应该允许mediaconvert.amazonaws.com服务主体:

  1. 打开IAM控制台,找到MediaConvert_Default_Role
  2. 切换到「信任关系」标签,编辑策略,确保包含以下内容:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "mediaconvert.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

3. 确保调用API的IAM用户拥有iam:PassRole权限

即使你的用户有MediaConvert全权限,也需要明确允许它将指定的MediaConvert角色传递给服务。给该用户添加一个自定义权限策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::你的账号ID:role/service-role/MediaConvert_Default_Role"
    }
  ]
}

注意替换成你实际的账号ID,遵循最小权限原则,不要给全局的iam:PassRole权限。

4. 验证角色的S3访问权限

最后确认MediaConvert_Default_Role的权限策略里包含对输入S3路径(test/audio.webm)的s3:GetObject权限,以及对输出路径(test/audio.mp3)的s3:PutObject权限,避免后续出现其他权限问题。

先试试修正区域配置,这大概率能解决你的报错,如果还不行再检查后面的权限配置。

备注:内容来源于stack exchange,提问作者Hadi Aghandeh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 10:28:10