格式不正确的lambda代理响应,找不到错误

时间:2020-05-09 14:19:34

标签: aws-lambda aws-api-gateway

我试图使用lambda和API Gateway从我的api中获取数据,在发送获取请求时出现此错误:

Execution failed due to configuration error: Malformed Lambda proxy response

代码返回:

return {
        'statusCode': 200,
        'headers': {'Content-Type': 'application/json'},
        'Access-Control-Allow-Origin': '*' ,
        "isBase64Encoded": False,
        'body': json.dumps(data)
    }

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

代理响应必须是must only contain the following keys的字典:

  • headers
  • body
  • isBase64Encoded
  • multiValueHeaders
  • statusCode

在您的示例中,您还有一个附加密钥Access-Control-Allow-Origin,因此API Gateway声称它是格式错误的响应。上面链接的文档甚至明确声明Access-Control-Allow-Origin必须是headers的一部分:

要为Lambda代理集成启用CORS,必须将Access-Control-Allow-Origin:domain-name添加到输出headers.domain-name可以是任何域名的*

如果将响应更改为以下内容,则应该可以正常工作:

return {
    'statusCode': 200,
    'headers': {
        'Access-Control-Allow-Origin': '*',
        'Content-Type': 'application/json'
    },
    'isBase64Encoded': False,
    'body': json.dumps(data)
}