Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in AWS by (19.1k points)

How to set Use Lambda Proxy integration in swagger for API-Gateway?

My current swagger is bellow but I would really like to set up the proxy integration. I would let me simplify a lot of things, not to mention I could remove the requestTemplates and responses blocks from the swagger definition.

I am attempting to set up the new Lambda Proxy mode from this blog post.

Current swagger:

  '/document':

    options:

      summary: CORS support

      description: |

        Enable CORS by returning correct headers

      consumes:

        - application/json

      produces:

        - application/json

      tags:

        - CORS

      x-amazon-apigateway-integration:

        type: mock

        requestTemplates:

          application/json: |

            {

              "statusCode" : 200

            }

        responses:

          "default":

            statusCode: "200"

            responseParameters:

              method.response.header.Access-Control-Allow-Headers : "'Content-Type,X-Amz-Date,Authorization,X-Api-Key'"

              method.response.header.Access-Control-Allow-Methods : "'*'"

              method.response.header.Access-Control-Allow-Origin : "'*'"

            responseTemplates:

              application/json: |

                {}

      responses:

        200:

          description: Default response for CORS method

          headers:

            Access-Control-Allow-Headers:

              type: "string"

            Access-Control-Allow-Methods:

              type: "string"

            Access-Control-Allow-Origin:

              type: "string"

    x-amazon-apigateway-any-method:

      produces:

      - "application/json"

      responses:

        200:

          description: "200 response"

          schema:

            $ref: "#/definitions/Empty"

      x-swagger-router-controller: main

      x-lambda-function: ../../swiki/build/document

      x-amazon-apigateway-integration:

        type: aws

        httpMethod: POST

        uri: arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/@@LambdaFunctionDocument/invocations

        credentials: @@APIGatewayExecutionRole

        passthroughBehavior: "when_no_templates"

        requestTemplates:

          application/json: |

            #set($allParams = $input.params())

            {

              "bodyJson" : $input.json('$'),

              "format": "html",

              "params" : {

            #foreach($type in $allParams.keySet())

              #set($params = $allParams.get($type))

                "$type" : {

              #foreach($paramName in $params.keySet())

                  "$paramName" : "$util.escapeJavaScript($params.get($paramName))"

                #if($foreach.hasNext),#end

              #end

                }

              #if($foreach.hasNext),#end

            #end

              },

              "stageVariables" : {

            #foreach($key in $stageVariables.keySet())

                "$key" : "$util.escapeJavaScript($stageVariables.get($key))"

              #if($foreach.hasNext),#end

            #end

              },

              "context" : {

                "accountId" : "$context.identity.accountId",

                "apiId" : "$context.apiId",

                "apiKey" : "$context.identity.apiKey",

                "authorizerPrincipalId" : "$context.authorizer.principalId",

                "caller" : "$context.identity.caller",

                "cognitoAuthenticationProvider" : "$context.identity.cognitoAuthenticationProvider",

                "cognitoAuthenticationType" : "$context.identity.cognitoAuthenticationType",

                "cognitoIdentityId" : "$context.identity.cognitoIdentityId",

                "cognitoIdentityPoolId" : "$context.identity.cognitoIdentityPoolId",

                "httpMethod" : "$context.httpMethod",

                "stage" : "$context.stage",

                "sourceIp" : "$context.identity.sourceIp",

                "user" : "$context.identity.user",

                "userAgent" : "$context.identity.userAgent",

                "userArn" : "$context.identity.userArn",

                "requestId" : "$context.requestId",

                "resourceId" : "$context.resourceId",

                "resourcePath" : "$context.resourcePath"

              }

            }

        responses:

          default:

            statusCode: "200"

1 Answer

0 votes
by (44.4k points)

These fields are required for Lambda Proxy Integration:

  x-amazon-apigateway-integration:

    type: aws_proxy

    httpMethod: <method>

    uri:  <function_uri>

    credentials: <optional_creds>

Browse Categories

...