AWS HTTP API 与 AWS Step Functions 集成 -> 在输入中发送多个值

use*_*997 5 amazon-web-services aws-lambda aws-api-gateway aws-step-functions aws-http-api

我有一个Type: AWS::Serverless::HttpApi正在尝试连接到 aType: AWS::Serverless::StateMachine作为触发器。这意味着 HTTP API 将触发 Step Function 状态机。

我只需指定一个输入就可以让它工作。例如,DefinitionBody当它工作时,看起来像这样:

      DefinitionBody:
        info:
          version: '1.0'
          title:
            Ref: AWS::StackName
        paths:
          "/github/secret":
            post:
              responses: 
                default:
                  description: "Default response for POST /"
              x-amazon-apigateway-integration:
                integrationSubtype: "StepFunctions-StartExecution"
                credentials:
                  Fn::GetAtt: [StepFunctionsApiRole, Arn]
                requestParameters:
                  Input: $request.body
                  StateMachineArn: !Ref SecretScannerStateMachine
                payloadFormatVersion: "1.0"
                type: "aws_proxy"
                connectionType: "INTERNET"
                timeoutInMillis: 30000
        openapi: 3.0.1
        x-amazon-apigateway-importexport-version: "1.0"
Run Code Online (Sandbox Code Playgroud)

请注意以下行:Input: $request.body。我只是指定$request.body.

但是,我需要能够发送$request.body$request.header.X-Hub-Signature-256。我需要将这两个值作为输入发送到我的状态机。

我尝试过很多不同的方法。例如:

Input: " { body: $request.body, header: $request.header.X-Hub-Signature-256 }"
Run Code Online (Sandbox Code Playgroud)

Input:
  $request.body
  $request.header.X-Hub-Signature-256 
Run Code Online (Sandbox Code Playgroud)

Input: $request
Run Code Online (Sandbox Code Playgroud)

似乎什么都不起作用。我正在尝试遵循此处的文档:

但似乎没有任何内容表明如何传递多个变量,只有一个。

我每次都会遇到不同的错误,但这是主要的错误:

Warnings found during import: Unable to create integration for resource at path 'POST /github/secret': Invalid selection expression specified: Validation Result: warnings : [], errors : [Invalid source: $request specified for destination: Input].
Run Code Online (Sandbox Code Playgroud)

任何有关如何传递多个值的帮助将不胜感激。

小智 0

根据这个repost.aws 帖子描述了类似的场景:

HTTP API 不支持你想要的。您可以使用 REST API 和请求映射来实现此目的。

因此,请尝试使用 REST API。