AWS SAM配置StepFunctionsExecutionPolicy调用嵌套SFN工作流权限错误排查
问题根因
存在两个配置错误共同/单独导致权限报错:
- 主状态机的
StepFunctionsExecutionPolicy参数使用错误
SAM提供的StepFunctionsExecutionPolicy策略模板支持StateMachineName和StateMachineArn两类参数,你指定了StateMachineName参数,但传入的!Ref SubProcessStateMachine返回值是子状态机的完整ARN,而非单纯的状态机名称。基于错误参数生成的IAM策略资源规则完全无法匹配真实的子状态机ARN,导致states:StartExecution权限校验失败。 - 模板存在语法错误
你在模板中定义了两个顶级Resources块,不符合CloudFormation语法规范,实际部署时后定义的Resources会覆盖前面的,极端情况下会导致子状态机资源未被创建、权限策略匹配的资源不存在。
修复方案
- 先合并所有资源到同一个
Resources块下,删除重复的顶级Resources字段。 - 将主状态机的
StepFunctionsExecutionPolicy配置修改为使用StateMachineArn参数,修改后的配置如下:
- StepFunctionsExecutionPolicy: StateMachineArn: !Ref SubProcessStateMachine
补充说明
- AWS SAM中
AWS::Serverless::StateMachine资源的!Ref返回值默认是状态机的完整ARN,直接传给StateMachineArn参数可以精准匹配目标资源,不需要额外处理。 - 如果一定要使用
StateMachineName参数,需要手动截取ARN中的名称字段,还要适配SAM自动为资源添加的随机后缀,维护成本远高于直接传ARN。
内容的提问来源于stack exchange,提问作者yucer
相关产品推荐
相关产品推荐

