I have configured a lambda proxy integration with API Gateway using SAM specification and am invoking the lambda asynchronously by passing X-Amz-Invocation-Type: "'Event'" header
ApiGateway:
Type: AWS::Serverless::Api
Properties:
StageName: prod
DefinitionBody:
swagger: "2.0"
info:
title:
Ref: AWS::StackName
description: API endpoint for invoking LambdaFunction
version: 1.0.0
paths:
/items:
post:
consumes: ["application/json"]
produces: ["application/json"]
responses: {}
x-amazon-apigateway-integration:
type: "aws_proxy"
uri:
Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${LambdaFunction.Arn}/invocations
passthroughBehavior: "when_no_match"
httpMethod: "POST"
requestParameters:
integration.request.header.X-Amz-Invocation-Type: "'Event'"
The problem is that lambda is returning empty response(invoked async) so API Gateway is throwing following error
Wed Nov 14 08:03:14 UTC 2018 : Execution failed due to configuration error: Malformed Lambda proxy response Wed Nov 14 08:03:14 UTC 2018 : Method completed with status: 502
Is this behaviour expected? Do I have to define responses explicitly? I do not want to throw 200 always because I also want to send bad request and unauthorized errors as well.What's the solution to avoid this problem?