【发布时间】:2018-09-14 05:59:20
【问题描述】:
我有一个由几个 lambda 组成的状态机,我使用 Cloudformation 模板设置了这些 lambda,该模板进行一些处理并最终将文件保存到 S3;除非要求,否则我不会在此处添加它,因为它可以正常工作。 step 函数的最后一部分是一个 lambda,它输出以下内容:
{
"output": {
"statusCode": "200",
"body": "{\"dataset-name\": \"inserted\"}",
"headers": {
"Content-Type": "application/json"
}
}
}
这里是 cloudformation 模板,我必须设置一个调用这个 step 函数的 API 方法:
PostDatasetMethod:
Type: AWS::ApiGateway::Method
DependsOn: Resource
Properties:
ApiKeyRequired: false
AuthorizationType: NONE
HttpMethod: POST
Integration:
Credentials: !Ref 'IamRoleArn'
IntegrationHttpMethod: POST
PassthroughBehavior: NEVER
Type: AWS
Uri: 'arn:aws:apigateway:us-east-1:states:action/StartExecution'
IntegrationResponses:
- StatusCode: 200
RequestTemplates:
application/json: !Sub |
{
"input": "$util.escapeJavaScript($input.json('$'))",
"stateMachineArn": "${StateMachine}"
}
ResourceId: !Ref 'Resource'
RestApiId: !Ref 'Api'
但是,我得到了错误
Execution failed due to configuration error: No match for output mapping and no default output mapping configured
当我调用 API 时,即使 step 函数成功完成,我想是因为我不确定如何在 CloudFormation 模板中设置方法和集成响应。我只需要按原样传递上面的 json,类似于默认情况下为 lambdas 所做的。为了让这个 API 按预期工作,我还需要 CloudFormation 模板中的哪些内容?
【问题讨论】:
标签: amazon-web-services aws-api-gateway amazon-cloudformation aws-step-functions