AWS ALB->Lambda 502

AWS ALB->Lambda 502

我到处都找过了,但没找到太多相关信息。ALB 上的文档/调试似乎很差劲...

我收到了来自 ALB 的 502 错误,原因不明。我有一个带有 Lambda 目标的 ALB。我的 Lambda 将此发送给 ALB:

{\n statusCode:200,\n body:'Root ...',\n multiValueHeaders:{\n
'x-powered-by':['Express'],\n 'access-control-allow-origin':['*'],\n 'content-type':['text/html; charset=utf-8'],\n
'content-length':['7'],\n etag:['W/"7-bEyWHAj7Nx3j68RN5+dEhPIpvp0"']\n },\n isBase64Encoded:false,\n statusDescription:'200 OK'\n}`

我在 Cloudwatch 日志中收到以下内容:

h2 2021-01-10T18:48:47.956319Z app/api-dev/955d2b8cbf36b4d0 73.231.54.75:32892 - 0.005 0.029 0.000 502 - 19 594 “获取https://api.dev.co:443/docsHTTP/2.0” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,如 Gecko) Chrome/87.0.4280.88 Safari/537.36” ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 arn:aws:elasticloadbalancing:us-west-2:025080367422:targetgroup/api-dev/106c350fe23bff29 “Root=1-5ffb4c0f-103216757067a60b58ecf857” “api.dev.co” “arn:aws:acm:us-west-2:025080367422:certificate/0a6623b2-85e8-4d31-889e-9cc0354d74ec” 0 2021-01-10T18:48:47.921000Z “转发” “-” “LambdaUnhandled” “-” “-” “-” “-”

据我所知,我发送的回复是正确的,不是吗?


根据我下面的评论,返回“text/html”的端点失败。返回“application/json”的端点有效;以下失败:

{\n statusCode: 200,\n body: 'AAABAAEAIB4AA[...]//8=',\n multiValueHeaders: {\n 'x-powered-by': [ 'Express' ],\n
'access-control-allow-origin': [ '*' ],\n 'accept-ranges': [ 'bytes' ],\n 'cache-control': [ 'public, max-age=0' ],\n
'last-modified': [ 'Sun, 10 Jan 2021 18:57:00 GMT' ],\n etag: [ 'W/"fb6-176eda8a060"' ],\n 'content-type': [ 'image/x-icon' ],\n
'content-length': [ 4022 ]\n },\n isBase64Encoded: true,\n 状态描述:'200 OK'\n}

答案1

响应是否应采用 JSON 格式?如果是这种情况,则必须用双引号括住所有属性名称,即,而不是...

{ statusCode: 200, body: 'Root...', ... }

它应该是:

{ "statusCode": 200, "body": "Root...", ... }

答案2

返回的有效负载是否大于 1MB?“目标是 Lambda 函数,响应主体超过 1 MB。”->https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html

答案3

好的。已修复。我不确定我发布这个问题时处于什么位置,但最终归结为一个错误的 HTTP 标头。实际上,它看起来是一个不允许的(不是坏的)标头。我最终撕毁了 serverless-express 并将其简化为以下内容:

https://gist.github.com/alsonkemp/cd133900bbc664095ee852cd20a5e9f5

找不到有关此的任何文档...

思考正是‘accept-ranges’标头破坏了它。

相关内容