如何在cloudformation中将模板添加到APIgateway的body Mapping模板(在integrationResponse中)

时间:2017-11-21 20:57:54

标签: amazon-web-services aws-api-gateway amazon-cloudformation

我正在使用api网关,并且在我的集成响应的主体映射teplate中我有:

#set ($errorMessageObj = $util.parseJson($input.path('$.errorMessage')))
#set ($bodyObj = $util.parseJson($input.body))

 {
  "searchObjects":"$input.body",
  "statusCode":"$errorMessageObj.statusCode",
  "message":"$errorMessageObj.message"

 }

现在在我的代码的api网关部分,我有:

GetMethod:
  Type: AWS::ApiGateway::Method
  DependsOn: APIGatewayToLambdaPermission
  Properties:
    AuthorizationType: NONE
    HttpMethod: GET
    Integration:
      Type: AWS
      IntegrationHttpMethod: POST
      Uri:
        Fn::Join:
        - ''
        - - 'arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/'
          - Fn::ImportValue: !Sub ${project}-${EnvironmentApp}-lambda-es-
            search
          - "/invocations"
      IntegrationResponses:
      - StatusCode: 200
        ResponseParameters:
          method.response.header.Access-Control-Allow-Origin: "'*'"

我不知道如何将其添加到我的云层中:

    #set ($errorMessageObj = $util.parseJson($input.path('$.errorMessage')))
#set ($bodyObj = $util.parseJson($input.body))

 {
  "searchObjects":"$input.body",
  "statusCode":"$errorMessageObj.statusCode",
  "message":"$errorMessageObj.message"

 }

这是我的api网关设置:

enter image description here

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果您使用AWS控制台,则可以转到

  

API网关> api > 阶段>标签导出>   选择导出为Swagger + API网关扩展>点击 YAML

比你看到的

httpMethod: "POST"
        requestTemplates:
          application/json: "#set ($errorMessageObj = $util.parseJson($input.path('$.errorMessage')))\n\
            #set ($bodyObj = $util.parseJson($input.body))\n\n {\n  \"searchObjects\"\
            :\"$input.body\",\n  \"statusCode\":\"$errorMessageObj.statusCode\",\n\
            \  \"message\":\"$errorMessageObj.message\"\n }"
        contentHandling: "CONVERT_TO_TEXT"
        type: "aws"

希望有所帮助