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

跨AWS账户触发Step Function:权限配置问题及角色假设疑问

问题分析与解决方案

你的当前配置不可行,权限拒绝的原因和修正点如下:

1. 权限策略的资源配置错误

你要触发的是账户B中的Step Function,但权限策略里的Resource写的是账户A的ARN(arn:aws:states:*:[Account A ID]:...),完全不匹配目标资源。必须把Resource换成账户B的Step Function对应的ARN,示例如下:

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Action": [
               "states:StartExecution"
           ],
           "Resource": [
              "arn:aws:states:*:[Account B ID]:stateMachine:你的状态机名称"
           ],
           "Effect": "Allow"
        }
    ]
}

注:不需要包含activity和execution的ARN,因为你只需要states:StartExecution权限,目标资源就是账户B的状态机本身

2. 信任策略的优化(可选但推荐)

虽然用账户A的root用户作为Principal可以生效,但从安全角度,更建议直接指定账户A中程序实际使用的IAM身份(比如程序运行时的ECS任务角色、Lambda执行角色,或者IAM用户)的ARN,而非root,避免过度授权。

3. 必须在账户A中扮演该角色

是的,你必须在账户A的程序中先调用sts:AssumeRole获取账户B角色的临时凭证,再用这个临时凭证调用Step Functions的startExecution接口。直接用账户A的原有身份调用会因跨账户权限不足被拒绝。

核心调用流程:

  • 账户A的程序通过自身IAM身份调用sts:AssumeRole,传入账户B中创建的角色ARN
  • 获取临时AccessKey、SecretKey和SessionToken
  • 使用这些临时凭证初始化Step Functions SDK客户端
  • 调用startExecution触发账户B的状态机

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:55:25