gpt4 book ai didi

python-3.x - 我收到 ALB Lambda 错误 - 502 Bad Gateway

转载 作者:行者123 更新时间:2023-12-03 21:07:11 26 4
gpt4 key购买 nike

我一直在努力解决 alb 2 lambda 502 错误的网关错误。
在我的 ALB 访问日志中,它显示了一个“LambdaInvalidResponse”,我猜这是因为我的 lambda 返回了一个无效的响应。这应该很容易解决,但我一生都无法弄清楚。有人可以帮忙:)。

在我的 python 代码中,我返回以下内容:

new_response = { "statusCode": 200, "statusDescription": "200 OK", "isBase64Encoded": False, "headers": { "Content-Type": "text/json; charset=utf-8" } }


new_response['body'] = '{"name":"function1"}'
return new_response

但是在cloudwatch中是这样的:

返回响应:

{'statusCode': '200', 'body': '{\n "message": "Success",\n "response": {\n "body": "{\"name\":\"function1\"}",\n "headers": {\n "Content-Type": "text/json; charset=utf-8"\n },\n "isBase64Encoded": false,\n "statusCode": 200,\n "statusDescription": "200 OK"\n }\n}'}



我真的很想知道为什么结果会被包裹在 body 里——有人有什么想法吗?

最佳答案

我真的很想知道为什么结果会被包裹在 body 里——有人有什么想法吗?
您正在查看的正文来自 cloudwatch 收到的请求(其中包含有关触发它的事件的信息。您的 lambda 的请求正文只是这些信息之一),而不是来自您的 lambda 本身的正文(请注意您的 lambda 的主体位于 cloudwatch 请求的字段响应内,即在接收到的 cloudwatch 请求的主体键内)。
你很接近,但这些行是错误的:

"headers": { "Content-Type": "text/json; charset=utf-8" } }
new_response['body'] = '{"name":"function1"}'
如果您希望在 ALB lambda 上返回 JSON,正确的做法应该是:
    "headers": { "Content-Type": "application/json; charset=utf-8" } }
new_response['body'] = json.dumps({"name":"function1"})
例如:
          import json

def handler(event, context):
msg = "Hello world from lambda!"

response = {
"statusCode": 200,
"statusDescription": "200 OK",
"isBase64Encoded": False,
"headers": {
"Content-Type": "application/json"
},
"body": json.dumps({"myMsg": msg})
}

return response
如果您查看 cloudwatch 日志,您可能会收到 LambdaUserError
如果你想返回一个文本而不是 JSON,它应该是这样的:
 def handler(event, context):
response = {
"statusCode": 200,
"statusDescription": "200 OK",
"isBase64Encoded": False,
"headers": {
"Content-Type": "text/html"
},
"body": "<h1>Hello world from Lambda!</h1>"
}
return response
在这种情况下, 内容类型 是 text/html 而不是 application/json。并且您的正文格式为 string/html 而不是 json。 :)
一些有用的链接:
https://docs.aws.amazon.com/lambda/latest/dg/services-alb.html
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html

关于python-3.x - 我收到 ALB Lambda 错误 - 502 Bad Gateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54786485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com