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

AWS Batch跨账号Assume Role授权失败问题求助

解决方案:AWS Batch跨账号AssumeRole被拒问题

问题根因

B1角色的信任策略未正确匹配A1角色的假设角色会话(assumed-role)。当AWS Batch以A1作为作业角色运行时,会生成带随机会话ID的临时身份(格式为arn:aws:sts::A:assumed-role/A1/[随机ID]),而原信任策略仅允许A1的角色ARN(arn:aws:iam::A:role/A1),导致权限校验失败。

具体解决方法

方法1:调整B1的信任策略,允许A1的所有假设会话

修改B账号中B1角色的信任策略,通过StringLike条件匹配A1角色的所有assumed-role身份:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::[账号A-ID]:role/A1"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": "arn:aws:sts::[账号A-ID]:assumed-role/A1/*"
        }
      }
    }
  ]
}

替换[账号A-ID]为实际的AWS账号A的ID。

方法2:添加更严格的来源限制(可选)

如果需要限制仅允许AWS Batch作业发起的AssumeRole请求,可以在信任策略中增加aws:SourceArn和aws:SourceAccount条件,缩小权限范围:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::[账号A-ID]:role/A1"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": "arn:aws:sts::[账号A-ID]:assumed-role/A1/*"
        },
        "StringEquals": {
          "aws:SourceAccount": "[账号A-ID]",
          "aws:SourceArn": "arn:aws:batch:[区域ID]:[账号A-ID]:job-definition/[你的作业定义名]:*"
        }
      }
    }
  ]
}

替换[区域ID]和[你的作业定义名]为实际信息。

验证调整

修改完成后,重新触发AWS Batch作业,验证是否能成功AssumeRole并访问B账号的S3存储桶。

内容的提问来源于stack exchange,提问作者Sid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 01:15:41