跨账号配置疑问:从Account A的ECS任务发送消息至Account B的SQS
跨账号ECS任务向SQS发送消息的权限配置说明
核心结论
跨账号从ECS任务发送消息到SQS不是必须配置Assume Role,有两种可行方案,可根据权限管控需求选择:
方案一:无需Assume Role(和SNS跨账号逻辑一致)
这种方式配置简单,代码无需额外处理,和你熟悉的SNS跨账号到SQS的权限逻辑相同:
- 在Account B的目标SQS队列上添加权限策略,允许Account A的ECS任务角色(或Account A根账号)执行
sqs:SendMessage操作 - 在Account A的ECS任务角色(任务运行时使用的IAM角色)的权限策略中,添加允许向Account B的目标SQS队列发送消息的权限(指定
sqs:SendMessage动作,资源为目标SQS的ARN) - 代码里直接使用ECS任务默认的AWS凭证即可发送消息,不需要额外的角色切换逻辑
方案二:使用Assume Role(配合STS)
仅当有特殊权限管控需求时才需要用这种方式(比如Account B不想直接开放队列权限给Account A的固定角色,或需要临时权限):
- 在Account B创建一个IAM角色,该角色的权限策略包含向目标SQS发送消息的权限
- 给这个角色设置信任关系,允许Account A的ECS任务角色来扮演它
- 在Account A的ECS任务角色中,添加允许执行
sts:AssumeRole的权限,目标为Account B创建的角色ARN - 代码里需要通过STS调用AssumeRole获取临时凭证,用该凭证发送SQS消息(你提到的
AWSSTSAssumeRoleWrapper就是用来封装这个角色切换逻辑的)
内容的提问来源于stack exchange,提问作者Rajashree Gr
相关产品推荐
相关产品推荐

