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

测试环境嵌套AWS Step Functions执行时持续触发AccessDeniedException

问题

在测试环境中执行嵌套AWS Step Functions时,持续遇到AccessDeniedException异常,但相同配置在集成环境中运行正常。child-state-machine-1和child-state-machine-2作为并行步骤均出现该错误,错误信息如下:

{
  "cause": "User: arn:aws:sts::1234556:assumed-role/SomeRole/xyz is not authorized to access this resource (Service: AWSStepFunctions; Status Code: 400; Error Code: AccessDeniedException; Request ID: SomeID; Proxy: null)",
  "error": "StepFunctions.AWSStepFunctionsException",
  "resource": "startExecution.sync",
  "resourceType": "states"
}

配置详情:
主状态机(main-state-machine)通过states:StartExecution或states:StartSyncExecution启动其他子状态机,使用IAM角色main-state-machine-role,已通过Terraform和AWS控制台附加如下策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "states:StartExecution",
                "states:StartSyncExecution"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:states:REGION:ACCOUNT_ID:stateMachine:child-state-machine-1",
                "arn:aws:states:REGION:ACCOUNT_ID:stateMachine:child-state-machine-2",
                "arn:aws:states:REGION:ACCOUNT_ID:stateMachine:child-state-machine-3"
            ]
        }
    ]
}

已检查内容:

  • 确认IAM策略已正确附加到测试环境的对应角色(通过AWS控制台验证);
  • 策略中的状态机ARN与实际ARN完全匹配;
  • 开发环境采用相同的策略和角色配置,运行正常。

请问在已验证策略和ARN正确且集成环境正常的情况下,测试环境出现该AccessDeniedException的原因可能是什么?

可能的原因分析
  • 子状态机资源策略限制:测试环境的子状态机可能配置了资源策略,未授权主状态机角色访问,而集成环境中已放开该限制。AWS Step Functions的资源策略会叠加IAM权限,只要其中一方拒绝,就会触发AccessDeniedException。
  • IAM角色权限边界约束:测试环境的main-state-machine-role可能设置了权限边界,该边界未包含states:StartExecution/states:StartSyncExecution操作,或未覆盖子状态机的ARN范围。集成环境的角色可能无权限边界,或边界配置更宽松。
  • 主状态机执行角色配置错误:错误信息中显示的STS假设角色(arn:aws:sts::1234556:assumed-role/SomeRole/xyz)可能并非main-state-machine-role,需确认测试环境主状态机的执行角色是否配置正确,是否误用了其他受限角色。
  • 组织SCP限制:若测试环境属于AWS Organizations成员账户,组织级别的服务控制策略(SCP)可能限制了states:StartExecution类操作,或禁止访问特定子状态机资源,而集成环境所在账户不受该SCP约束。
  • IAM策略生效延迟:尽管控制台显示策略已附加,但IAM权限同步可能存在几分钟延迟,尤其是Terraform批量部署后。可等待一段时间重试,或用aws iam simulate-principal-policy命令直接验证权限是否生效。
  • 子状态机状态异常:测试环境的子状态机可能处于禁用状态,部分场景下AWS会用AccessDeniedException而非明确的禁用错误码返回,需检查子状态机的运行状态是否为启用(Active)。

内容的提问来源于stack exchange,提问作者Yasin Türk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:00:04