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 '內容類型': [ 'text/html; charset=utf-8' ],\n
'內容長度': [ '7' ],\n etag: [ 'W/"7-bEyWHAj7Nx3j68RN5+dEhPIpvp0"' ]\n },\n isBase64Encoded: false,\ n狀態描述:'200 OK'\n}`

我在 Cloudwatch 日誌中收到以下內容:

h2 2021-01-10T18:48:47.956319Z 應用程式/api-dev/955d2b8cbf36b4d0 73.231.54.75:32892 - 0.005 0.029 0.0005 取得 50195950 5095 取得 509195 50959 509 509 5095953 取得 5https://api.dev.co:443/docsHTTP/2.0" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36(KHTML,如 Gecko)Chrome/87.0.4280.88 us-west-2:025080367422:targetgroup/api-dev/106c350fe23bff29 "Root=1-5ffb4c0f-103216757067a60b58ecf857" "api.dev.co20 62 3b2 - 85e8-4d31-889e-9cc0354d74ec" 0 2021-01-10T18:48:47.921000Z"轉寄""-""LambdaUnhandled""-""-""-""-"

AFAICT,我正在發送正確的回复,不是嗎?


根據我下面的評論,返回“text/html”的端點失敗。傳回「application/json」的端點有效;以下失敗:

{\n statusCode: 200,\n body: 'AAABAAAEAIB4AA[...]//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
'最後修改': [ '2021 年1 月10 日星期日18:57:00 GMT' ],\n etag: [ 'W/"fb6-176eda8a060"' ],\n '內容類型': [ 'image/x -icon' ],\n
'內容長度': [ 4022 ]\n },\n isBase64Encoded: true,\n statusDescription: '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”標頭阻止了它。

相關內容