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

Serverless Framework如何正确定义Step Functions并行分支?

错误根因

Step Functions Parallel状态的Branches字段为数组结构,每个并行分支是数组内的独立对象,每个对象单独配置StartAt、States属性。
原有YAML配置存在两类问题:

  • 未使用YAML数组语法声明分支,将两个分支的StartAt、States直接平铺为Branches节点下的同级键,YAML语法不允许同一层级存在重复键,直接触发部署报错
  • 存在语法笔误:ResultPath字段多写冗余双引号,ConfirmBookPriceIsValid任务节点的属性缩进错误,同时遗漏原工作流中用于合并结果的ReturnCombinedData Pass节点
正确配置示例

将每个并行分支作为Branches下的数组项(以-开头标记数组元素),修正缩进和语法笔误,补全缺失节点即可,完整可用配置如下:

stepFunctions:
  stateMachines:
    Process-BookPricingCreated-StateMachine:
      name: myStateMachine
      definition:
        Comment: Parallel Evaluation of multiple Book Pricing atributes.
        StartAt: VerifyBookPricingAttributes
        States:
          VerifyBookPricingAttributes:
            Type: Parallel
            Next: ReturnCombinedData
            Branches:
              # 第一个分支:库存校验
              - StartAt: ConfirmBookAvailability
                States:
                  ConfirmBookAvailability:
                    Type: Task
                    Comment: This state will query DynamoDB table representing RS catalog. If the Book is found - availability will be confirmed
                    Resource: arn:aws:lambda:us-east-1:000000000000:function:ConfirmBookAvailability
                    ResultPath: $.BookAvailability
                    End: true
              # 第二个分支:价格校验
              - StartAt: ConfirmBookPriceIsValid
                States:
                  ConfirmBookPriceIsValid:
                    Type: Task
                    Comment: This state will query DynamoDB table representing Book Prices. If the input BookPrice matches the Dynamo valid record - the pricing will be confirmed
                    Resource: arn:aws:lambda:us-east-1:000000000000:function:ConfirmBookPriceIsValid
                    ResultPath: $.IsBookPriceValid
                    End: true
          # 结果合并节点
          ReturnCombinedData:
            Type: Pass
            Parameters:
              comment: Combining the result
              CombinedDetails:
                "BookAvailability.$": "$[0].BookAvailability"
                "IsBookPriceValid.$": "$[1].IsBookPriceValid"
            End: true
配置注意事项
  • YAML中数组元素必须以-标记,对应JSON里的[]数组结构,Parallel下有多少个并行分支,就写多少个带-前缀的分支对象
  • YAML对缩进要求严格,同一节点下的属性必须保持相同缩进层级
  • 带.$后缀的参数键如果触发语法校验问题,可以给键加双引号包裹,和原JSON定义的执行逻辑完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:18:15