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

跨账号执行AWS ECS update-service报账号ID不匹配问题

问题根因

报错由两个核心配置错误导致:

  • 跨账号角色扮演的角色归属配置反向。操作账号B的ECS资源时,授权角色必须创建在目标账号B中,信任策略配置为信任账号A的访问身份;当前assume-role传入的角色ARN归属账号A,即使给该角色配置账号B为可信实体,信任方向也是错误的,无法获得账号B的资源操作权限。
  • 仅将assume-role的返回结果赋值给变量,未将接口返回的临时访问密钥、会话Token注入AWS CLI运行环境,CLI全程使用账号A本地原生凭证发起请求,未生效角色扮演身份,这是报错直接提示当前账号ID为Account_A_ID的直接原因。
正确操作步骤

1. 在账号B中创建合规的跨账号访问角色

  • 登录账号B的IAM控制台新建角色,可信实体选择「AWS账号」,填入源账号A的账号ID,授权账号A的身份可以扮演该角色
  • 给角色附加权限策略,至少包含ecs:UpdateService等需要执行的ECS操作权限,资源范围明确覆盖要操作的目标集群、服务
  • 记录该角色的完整ARN,格式为arn:aws:iam::Account_B_ID:role/<自定义角色名>,注意ARN中的账号ID必须是账号B的ID。

2. 正确执行角色扮演并加载临时凭证

在账号A的操作环境中,先执行角色扮演命令,注意替换为账号B中创建的角色ARN:

temp_role=$(aws sts assume-role \
  --role-arn arn:aws:iam::Account_B_ID:role/gocd-deploy-ecs-role \
  --role-session-name "ecs-update-service")

执行完成后,解析返回结果中的临时凭证,导出为AWS CLI默认识别的环境变量(需要本地提前安装jq工具用于解析JSON返回值):

export AWS_ACCESS_KEY_ID=$(echo $temp_role | jq -r '.Credentials.AccessKeyId')
export AWS_SECRET_ACCESS_KEY=$(echo $temp_role | jq -r '.Credentials.SecretAccessKey')
export AWS_SESSION_TOKEN=$(echo $temp_role | jq -r '.Credentials.SessionToken')

凭证加载完成后,可以执行aws sts get-caller-identity验证当前身份,如果返回的身份ARN归属账号B、且是刚才创建的角色会话,说明身份切换成功。

3. 执行ECS服务更新命令

跨账号调用AWS API时,建议所有资源参数都传入完整ARN,避免CLI在当前账号下检索资源导致匹配错误,调整后的命令如下:

aws ecs update-service \
  --service arn:aws:ecs:us-east-1:Account_B_ID:service/good-cluster/cluster-service \
  --cluster arn:aws:ecs:us-east-1:Account_B_ID:cluster/good-cluster \
  --force-new-deployment
可选优化配置

如果需要频繁跨账号操作,可以直接在AWS CLI配置文件(一般路径为~/.aws/config)中添加跨账号角色的独立配置项,不用每次手动导出临时凭证:

[profile b-ecs-deploy]
role_arn = arn:aws:iam::Account_B_ID:role/gocd-deploy-ecs-role
source_profile = a-local-credential # 替换为本地存储账号A凭证的profile名
region = us-east-1

后续执行命令时只需要追加--profile b-ecs-deploy参数,CLI会自动完成角色扮演和凭证轮换。

前置检查项

执行操作前请确认以下配置没有遗漏:

  • 账号B中角色的信任策略没有配置错误,信任主体确实为账号A的对应操作身份,不存在方向写反、账号ID填错的问题
  • 账号B中角色的权限策略没有添加限制账号访问的条件键,资源范围正确覆盖目标ECS集群、服务
  • 账号A中用于发起操作的IAM身份,本身已配置sts:AssumeRole权限,允许扮演账号B中的对应角色
  • 本地使用的AWS CLI版本没有过旧,避免跨账号API调用存在兼容问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:27:21