我已经使用 SAM 规范配置了与 API Gateway 的 lambda 代理集成,并通过传递 X-Amz-Invocation-Type: "'Event'" 标头异步调用 lambda
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'"
问题是 lambda 返回空响应(调用异步),因此 API Gateway 抛出以下错误
2018 年 11 月 14 日星期三 08:03:14 UTC:由于配置错误,执行失败:Lambda 代理响应格式错误 2018 年 11 月 14 日星期三 08:03:14 UTC:方法完成,状态:502
这种行为是预期的吗?我必须明确定义响应吗?我不想总是抛出 200,因为我也想发送错误的请求和未经授权的错误。避免这个问题的解决方案是什么?