请改用 Express Step Functions。这种类型的 Step Functions 可以被同步调用。转到您的 API Gateway 并在集成请求部分确保您有 StartSyncExecution 操作:
之后,在同一页面中稍微低一点到映射模板:
并为 application/json Content-Type 包含以下模板:
#set($input = $input.json('$'))
{
"input": "$util.escapeJavaScript($input)",
"stateMachineArn": "arn:aws:states:us-east-1:your_aws_account_id:stateMachine:your_step_machine_name"
}
之后,返回 Method Execution 并转到 Integration Response,然后转到 Mapping Templates 部分:
并使用以下模板从您的 lambda 中获得自定义响应:
#set ($parsedPayload = $util.parseJson($input.json('$.output')))
$parsedPayload
我的测试 Step Function 是这样的:
我的 Lambda 函数代码是:
部署您的 API Gateway 阶段。
现在,如果你去 Postman 并使用任何 json 正文发送 POST 请求,现在你会得到这样的响应: