具有步骤功能的AWS API网关

Bal*_*hna 2 amazon-web-services aws-lambda aws-api-gateway aws-step-functions

我想要一个示例将AWS API Gateway与Step Function集成.我已阅读本教程使用API​​网关创建步骤函数API但该教程需要我以格式发送请求

{    
"input": "{}",    
"name": "PostmanExecution",    
"stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:Custom" 
}
Run Code Online (Sandbox Code Playgroud)

我想发送普通请求并仅在API网关中配置此stateMachineArn,以便客户端不需要发送它.

Lee*_*des 9

创建API网关资源和方法.然后在"方法执行"设置的"集成请求"中,使用以下设置:

  • 集成类型:AWS服务
  • AWS区域:您所在的地区
  • AWS服务:步骤功能
  • AWS子域名:您的子域名(如果有的话) - 我将其留空
  • HTTP方法:POST
  • 行动:StartExecution
  • 执行角色:需要成为StepFunction启动执行策略的角色,例如arn:aws:iam :: aws:policy/AWSStepFunctionsFullAccess
  • 凭据缓存:我将其保留为默认值
  • 内容处理:直通

然后神奇.更进一步,在Body Mapping模板下:

  • 请求身体直通:从不
  • 添加映射模板:application/json

更进一步在模板文本框中:

#set($input = $input.json('$'))
{
   "input": "$util.escapeJavaScript($input)",
   "stateMachineArn": "arn:aws:states:eu-west-1:123456789012:stateMachine:yourStepFunctionName"
}
Run Code Online (Sandbox Code Playgroud)

这会将发布到API Gateway的json有效负载传递给Step Function.

省略执行名称,以便每次调用API Gateway创建一个新的执行.