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

AWS HTTP API集成Step Functions时如何传入多值作为执行输入

解决方案

你需要通过API Gateway的请求模板构造符合要求的JSON格式输入传入状态机,正确配置如下:

完整可用的DefinitionBody配置

DefinitionBody:
  info:
    version: '1.0'
    title:
      Ref: AWS::StackName
  paths:
    "/github/secret":
      post:
        responses: 
          default:
            description: "Default response for POST /github/secret"
        x-amazon-apigateway-integration:
          integrationSubtype: "StepFunctions-StartExecution"
          credentials:
            Fn::GetAtt: [StepFunctionsApiRole, Arn]
          # 替换原来的requestParameters为requestTemplates
          requestTemplates:
            application/json: |
              {
                "Input": "{\"body\": $util.toJson($request.body), \"x_hub_signature_256\": \"$util.escapeJavaScript($request.header.X-Hub-Signature-256)\"}",
                "StateMachineArn": "${SecretScannerStateMachine.Arn}"
              }
          payloadFormatVersion: "1.0"
          type: "aws_proxy"
          connectionType: "INTERNET"
          timeoutInMillis: 30000
  openapi: 3.0.1
  x-amazon-apigateway-importexport-version: "1.0"

配置说明

  • 用requestTemplates替代原来的requestParameters,可以灵活构造传入Step Functions的参数结构
  • 内置工具函数$util.toJson($request.body)会自动将请求体转为合法JSON字符串,避免手动拼接的转义错误
  • 内置工具函数$util.escapeJavaScript()会处理请求头中的特殊字符,保证最终的Input字段是合法JSON
  • 状态机执行时收到的输入会包含body和x_hub_signature_256两个顶层字段,可直接在状态机定义中通过$.body、$.x_hub_signature_256引用对应值

原配置失效原因

  1. 直接写Input: $request不符合API Gateway的参数选择表达式规则,Input仅支持单个结构化源或者通过模板构造的多字段结构
  2. 手动拼接JSON字符串时API Gateway不会自动解析字符串内部的$request.xxx变量,只有整个值完全是变量表达式时才会直接解析
  3. 数组格式的Input不符合Step Functions StartExecution API的参数要求,Input必须是字符串格式的JSON

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:48:00