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服务主体:
- 打开IAM控制台,找到
MediaConvert_Default_Role - 切换到「信任关系」标签,编辑策略,确保包含以下内容:
{ "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
相关产品推荐
相关产品推荐

