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

如何配置AWS Step Functions按输入映射选择性执行检查状态

实现方案

你可以通过前置默认值初始化+Choice分支判断+结果逐次聚合的逻辑改造Step Function,完全满足需求,具体步骤和最终配置如下:


核心改造逻辑

  • 新增初始化状态:未传入OnlyVerify参数时,自动填充所有检查项为true的默认配置,同时初始化空的结果存储对象
  • 每个检查项前增加Choice路由节点:判断当前检查项在OnlyVerify中的布尔值,为true则执行对应Lambda检查,为false则直接跳过进入下一检查项的判断
  • 逐次聚合检查结果:每执行完一个检查,就将结果追加到统一的ValidatedResults对象中,最终输出格式和要求完全匹配
  • 修正原有YAML中的缩进语法错误(原配置中Check B、Check C的Resource字段缩进不合法,会导致部署失败)

完整修改后的Step Function YAML配置

Comment: Conditionally run check steps based on OnlyVerify input
StartAt: InitState

States:
  # 初始化:处理默认值,初始化结果容器
  InitState:
    Type: Pass
    Parameters:
      # 记录原始输入
      RawInput.$: "$$.Execution.Input"
      # 默认所有检查项开启
      DefaultVerify:
        "Check A": true
        "Check B": true
        "Check C": true
      # 初始化空结果集
      ValidatedResults: {}
    Next: MergeVerifyConfig

  # 合并用户传入的OnlyVerify配置和默认配置
  MergeVerifyConfig:
    Type: Pass
    Parameters:
      # 如果用户传了OnlyVerify就覆盖默认值,没传就用全true的默认配置
      "OnlyVerify.$": "States.JsonMerge($.DefaultVerify, States.IsPresent($.RawInput.OnlyVerify) ? $.RawInput.OnlyVerify : {}, false)"
      "ValidatedResults.$": "$.ValidatedResults"
    Next: ChooseCheckA

  # 判断是否执行Check A
  ChooseCheckA:
    Type: Choice
    Choices:
      - Variable: "$.OnlyVerify['Check A']"
        BooleanEquals: true
        Next: RunCheckA
    Default: SkipCheckA

  RunCheckA:
    Type: Task
    Resource: "arn:aws:lambda:us-east-1:123456789012:function:checkA"
    # 把Lambda返回的PASS/FAIL包装成Check A的结果字段
    ResultSelector:
      "Check A.$": "$"
    ResultPath: "$.CheckAResult"
    Next: MergeCheckAResult

  MergeCheckAResult:
    Type: Pass
    Parameters:
      "OnlyVerify.$": "$.OnlyVerify"
      "ValidatedResults.$": "States.JsonMerge($.ValidatedResults, $.CheckAResult, false)"
    Next: ChooseCheckB

  SkipCheckA:
    Type: Pass
    Next: ChooseCheckB

  # 判断是否执行Check B
  ChooseCheckB:
    Type: Choice
    Choices:
      - Variable: "$.OnlyVerify['Check B']"
        BooleanEquals: true
        Next: RunCheckB
    Default: SkipCheckB

  RunCheckB:
    Type: Task
    Resource: "arn:aws:lambda:us-east-1:123456789012:function:checkB"
    ResultSelector:
      "Check B.$": "$"
    ResultPath: "$.CheckBResult"
    Next: MergeCheckBResult

  MergeCheckBResult:
    Type: Pass
    Parameters:
      "OnlyVerify.$": "$.OnlyVerify"
      "ValidatedResults.$": "States.JsonMerge($.ValidatedResults, $.CheckBResult, false)"
    Next: ChooseCheckC

  SkipCheckB:
    Type: Pass
    Next: ChooseCheckC

  # 判断是否执行Check C
  ChooseCheckC:
    Type: Choice
    Choices:
      - Variable: "$.OnlyVerify['Check C']"
        BooleanEquals: true
        Next: RunCheckC
    Default: FinalState

  RunCheckC:
    Type: Task
    Resource: "arn:aws:lambda:us-east-1:123456789012:function:checkC"
    ResultSelector:
      "Check C.$": "$"
    ResultPath: "$.CheckCResult"
    Next: MergeCheckCResult

  MergeCheckCResult:
    Type: Pass
    Parameters:
      "OnlyVerify.$": "$.OnlyVerify"
      "ValidatedResults.$": "States.JsonMerge($.ValidatedResults, $.CheckCResult, false)"
    Next: FinalState

  # 最终输出节点
  FinalState:
    Type: Pass
    End: true

配置说明

  • 三个检查Lambda直接返回"PASS"或"FAIL"字符串即可,不需要额外包装返回结构
  • 如果输入完全不传OnlyVerify字段,配置会自动执行所有三个检查项
  • 最终输出结构和要求完全一致:仅包含OnlyVerify配置和已执行检查项的结果,跳过的检查项不会出现在ValidatedResults中
  • 后续新增检查项只需要三步:在DefaultVerify中添加对应默认值、新增对应的Choice判断节点、新增执行和结果合并节点即可,逻辑和现有节点完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:33:34