API网关后面的Lambda中格式错误的Lambda代理响应

时间:2020-05-21 16:25:23

标签: python node.js api aws-lambda malformed

Lambda作为代理集成在API网关中,并且必须根据此文档https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html

格式化响应

当我使用POST方法在AWS控制台的Lambda中测试lambda函数时,得到200 ok响应。但是,当我从API网关运行此测试时,我收到“格式错误的Lambda代理响应”,响应主体为“空”。

我在Lambda测试中验证了响应,它看起来正确,但是从API Gateway测试执行时,空主体仍然存在。在查看了集成Lambda代理的输入格式后,我找到了根本原因:您必须正确格式化事件数据。我希望这可以节省您的时间和沮丧。

使用JSON采样请求正文

{
"username": "someuser",
"password": "some password"
}

以下是分辨率:

Python

请求

def lambda_handler(event, context):
...
    body = json.loads(event['body']) 
    username = body['username']

响应:

response = {
                "statusCode": 200,
                "body": json.dumps({"Message": "some message"}),
                "headers": {
                    "Content-Type": "application/json",
                },
                "isBase64Encoded": False,
}

Node.JS

请求

JSON.parse(event)

响应

JSON.stringify(response)

0 个答案:

没有答案