AWS API Gateway-由于配置错误,执行失败:Lambda代理响应格式错误-502

时间:2020-09-26 13:48:05

标签: python aws-lambda aws-api-gateway

我正在开发以AWS API Gateway为前端的新AWS Lambda函数。通常使用python。我以前做了很多。 不过,在这种情况下,我一直收到错误-“由于配置错误,执行失败:Lambda代理响应格式错误” 。 HTTP502。这让我发疯。就我而言,这个错误是微不足道的。这是我做错了....

在我的处理程序返回对象(dict)中,我使用了“状态”而不是“ statusCode”。走吧,我在其他所有工作中都使用了statusCode。我在这里浪费了很多时间,所以我想我会详细说明可能帮助别人比我更快解决问题的方法。

所以... 首先进行完整性测试:这是python特定的完整性测试

import json 
def lambda_handler(event, context):
    print(json.dumps(event)) 
    reply = {} 
    reply['body'] = json.dumps("I have been stringified") 
    reply["statusCode"] = 200 
    reply.update({"headers": {"Content-Type": "application/json"}})
    return reply

接下来的事情,如果statusCode是整数或字符串,则似乎无关紧要。两者似乎都可以。

如何对身体进行字符串化处理?如果已经是字符串,则无需理会。如果它是另一个更结构化的类型(如dict),则可以。

最后,让我指出,您始终可以在AWS Lambda的AWS控制台中使用“测试”事件功能。只需在处理程序中打印出事件(如上所述),然后将其用作测试输入正文即可创建测试。

长话短说-如果您将头撞在墙上,请从上面的健全性测试开始。

在上述情况下,我正在使用LAMBDA_PROXY集成。

1 个答案:

答案 0 :(得分:1)

我找到了您真正面对的解决方案。

[https://aws.amazon.com/premiumsupport/knowledge-center/malformed-502-api-gateway/] [1]

发生这种情况的原因是您的格式回复错误。使用以下代码。

import json 
def lambda_handler(event, context):
    print(json.dumps(event)) 
    reply = {} 
    #No Need to do json.dumps() in every places
    reply['body'] = "I have been stringified" 
    reply["statusCode"] = 200 
    reply.update({"headers": {"Content-Type": "application/json"}})
    return reply