【发布时间】:2023-03-05 16:01:01
【问题描述】:
我正在开发一个以 AWS API Gateway 为前端的新 AWS Lambda 函数。通常使用python。我以前做过很多这样的事情。 然而,在这种情况下,我不断收到错误 - “由于配置错误导致执行失败:格式错误的 Lambda 代理响应”。 HTTP 502。这让我发疯了。就我而言,这个错误是微不足道的。这是我做错了什么......
在我的处理程序返回对象(dict)中,我使用的是“status”而不是“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 是整数或字符串,这似乎无关紧要。两者似乎都可以正常工作。
把Body串起来怎么样?如果它已经是一个字符串,你不需要打扰。如果它是另一种更结构化的类型,例如 dict,你可以这样做。
最后,让我指出,您始终可以在 AWS 控制台中为 AWS Lambda 使用“测试”事件功能。只需在处理程序中打印出 事件(如上)复制它,然后创建一个使用它作为测试输入主体的测试。
长话短说 - 如果您正在用头撞墙,请从上面的理智测试开始。
在上述情况下,我使用的是 LAMBDA_PROXY 集成。
【问题讨论】:
-
你在使用 lambda 代理集成吗?
-
是的。我将更新我正在使用 LAMBDA_PROXY 集成的标注的答案
-
我试过了,可以成功得到“我已经被字符串化”了。
标签: python aws-lambda aws-api-gateway