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

使用startExecution.sync:2启动嵌套Step Functions遇权限错误求助

问题原因与解决方案

这个错误的核心原因是 startExecution.sync:2 和旧版 startExecution.sync 在EventBridge规则的使用逻辑上存在差异:

旧版sync依赖你指定的StepFunctionsGetEventsForStepFunctionsExecutionRule自定义规则,但新版sync:2会自动创建一个AWS托管的EventBridge规则(这类规则的ARN格式通常是arn:aws:events:<region>:<account-id>:rule/aws/stepfunctions/*)。而你的当前IAM权限仅允许操作特定的自定义规则,没有覆盖托管规则的资源范围,因此触发了AccessDeniedException。

修复步骤:扩展IAM权限范围

修改你的内联IAM语句,把EventBridge相关操作的资源范围扩展到包含Step Functions的托管规则:

iamRoleStatements:
  # Event to start SF synchronous
  - Effect: Allow
    Action:
      - events:PutTargets
      - events:PutRule
      - events:DescribeRule
      - events:DeleteRule
      - events:DisableRule
      - events:EnableRule
      - events:ListRules
      # 建议添加上RemoveTargets,避免后续清理任务时出现权限问题
      - events:RemoveTargets
    Resource:
      - arn:aws:events:eu-central-1:<MY_AWS_ACCOUNT_ID>:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule
      # 新增:允许操作Step Functions的托管规则
      - arn:aws:events:eu-central-1:<MY_AWS_ACCOUNT_ID>:rule/aws/stepfunctions/*
  - Effect: Allow
    Action:
      - states:StartExecution
    Resource:
      - <arn of other sf>
  - Effect: Allow
    Action:
      - states:DescribeExecution
      - states:StopExecution
    Resource:
      - "*"

额外说明

  • Serverless Framework确实只是生成CloudFormation栈,但sync:2的底层实现逻辑和旧版sync不同,需要的权限自然有变化,这和Serverless本身无关。
  • 托管规则是AWS为sync:2特性专门设计的,用于更可靠地同步执行结果回调,所以必须确保IAM角色有足够权限来创建、管理这类规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:07:53