簡體   English   中英

生產中的 AWS Lambda event.body 解析錯誤

[英]AWS Lambda event.body parsing error in production

我正在使用https://github.com/ARautio/aws-lambda-pdf-generator-puppeteer無服務器地創建 pdf。 我進行了一些更改以使 html 作為 POST 數據進行處理。

我運行命令: yarn deploy:prod將其部署在 aws lambda 上。

部署后,當我嘗試訪問服務器時,它給了我 500 錯誤。

代碼:

  console.log("Data", event.body)
  const { apiKey = '', html = '', pageConfig = {}, name, customPageConfig = false } = JSON.parse(event.body)

在本地,它工作正常,但是當我部署它時,它顯示錯誤:

Data eyJhcGlLZXkiOiAiYXNkc2FkYXNkZWVycnJycnIiLCAiaHRtbCI6ICJcbjxodG1sPjxoZWFkPjxzdHlsZT5cbiAgIC5wYWdlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGFsd2F5cztcbiAgICB9XG5cblxuICAgIEBwYWdlIHtcbiAgICAgIFxuICAgICAgQHRvcC1sZWZ0IHtcbiAgICAgICAgY29udGVudDogZWxlbWVudChoZWFkZXJSdW5uaW5nKTtcbiAgICAgIH1cblxuICAgICAgQGJvdHRvbS1sZWZ0IHtcbiAgICAgICAgY29udGVudDogZWxlbWVudChmb290ZXJSdW5uaW5nKTtcbiAgICAgIH1cblxuICAgIH1cbiAgIFxuICBcbiAgIFxuICBcbiAgIFxuICAuYmlzaHVMaW5lIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgIFxuICBcbiAgIFxuICAgIC5oZWFkZXIge1xuICAgICAgcG9zaXRpb246IHJ1bm5pbmcoaGVhZGVyUnVubmluZyk7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIFxuICAgXG4gICAgLmNvbmRpdGlvbmFsIHtcbiAgICAgICAgZGlzcGxheSA6IGlubGluZS1ibG9jaztcbiAgICB9XG5cbiAgIFxuICBcbiAgIFxuICAuaW5zZXJ0ZWQtaW1hZ2V7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICB9XG4gICBcblxuICAgIC5mb290ZXIge1xuICAgICAgcG9zaXRpb246IHJ1bm5pbmcoZm9vdGVyUnVubmluZyk7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgXG4gICAgICAgICAgICAucGFnZWYxM2ExY2E4OTA2NTRhYzY5MTg1NDM3YTgzNWIxMWM0eyAgXG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogMTBpbjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87IFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDtcbiAgICAgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgPC9zdHlsZT48L2hlYWQ==

來自生產服務器的日志:

2020-07-06T10:28:03.350Z    d1c38673-19f0-47ef-a748-cf8912e9cc82    INFO    
03:58:03 pm
2020-07-06T10:28:03.352Z    d1c38673-19f0-47ef-a748-cf8912e9cc82    ERROR   SyntaxError: Unexpected token e in JSON at position 0
    at JSON.parse (<anonymous>)
    at module.exports.pdf (/var/task/pdf.js:17:92)
    at Runtime.handler (/var/task/serverless_sdk/index.js:9:131855)
    at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)
03:58:03 pm
2020-07-06T10:28:03.410Z    d1c38673-19f0-47ef-a748-cf8912e9cc82    ERROR   Invoke Error    {
    "errorType": "SyntaxError",
    "errorMessage": "Unexpected token e in JSON at position 0",
    "stack": [
        "SyntaxError: Unexpected token e in JSON at position 0",
        "    at JSON.parse (<anonymous>)",
        "    at module.exports.pdf (/var/task/pdf.js:17:92)",
        "    at Runtime.handler (/var/task/serverless_sdk/index.js:9:131855)",
        "    at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
    ]
}
03:58:03 pm

我正在發送:

 {
   "apiKey": "asd",
   "html": "<h1>Hello</h1>",
   "pageConfig": {
      "size": "A4"
    }
 }

您正在解析的有效負載是base64編碼的。

看起來您需要先對其進行解碼才能訪問它。

理想情況下,您應該在兩種環境中使用 base 64 編碼內容,但是如果您想根據環境控制邏輯,請使用Lambda Environment Variables

如果您解碼您的有效負載(base64):

base64 -d <<< eyJhcGlLZXkiOiAiYXNkc2FkYXNkZWVycnJycnIiLCAiaHRtbCI6ICJcbjxodG1sPjxoZWFkPjxzdHlsZT5cbiAgIC5wYWdlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGFsd2F5cztcbiAgICB9XG5cblxuICAgIEBwYWdlIHtcbiAgICAgIFxuICAgICAgQHRvcC1sZWZ0IHtcbiAgICAgICAgY29udGVudDogZWxlbWVudChoZWFkZXJSdW5uaW5nKTtcbiAgICAgIH1cblxuICAgICAgQGJvdHRvbS1sZWZ0IHtcbiAgICAgICAgY29udGVudDogZWxlbWVudChmb290ZXJSdW5uaW5nKTtcbiAgICAgIH1cblxuICAgIH1cbiAgIFxuICBcbiAgIFxuICBcbiAgIFxuICAuYmlzaHVMaW5lIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgIFxuICBcbiAgIFxuICAgIC5oZWFkZXIge1xuICAgICAgcG9zaXRpb246IHJ1bm5pbmcoaGVhZGVyUnVubmluZyk7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIFxuICAgXG4gICAgLmNvbmRpdGlvbmFsIHtcbiAgICAgICAgZGlzcGxheSA6IGlubGluZS1ibG9jaztcbiAgICB9XG5cbiAgIFxuICBcbiAgIFxuICAuaW5zZXJ0ZWQtaW1hZ2V7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICB9XG4gICBcblxuICAgIC5mb290ZXIge1xuICAgICAgcG9zaXRpb246IHJ1bm5pbmcoZm9vdGVyUnVubmluZyk7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgXG4gICAgICAgICAgICAucGFnZWYxM2ExY2E4OTA2NTRhYzY5MTg1NDM3YTgzNWIxMWM0eyAgXG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogMTBpbjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87IFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDtcbiAgICAgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgPC9zdHlsZT48L2hlYWQ==

你會得到:

{"apiKey": "asdsadasdeerrrrrr", "html": "\n<html><head><style>\n   .page {\n      position: relative;\n      page-break-after: always;\n    }\n\n\n    @page {\n      \n      @top-left {\n        content: element(headerRunning);\n      }\n\n      @bottom-left {\n        content: element(footerRunning);\n      }\n\n    }\n   \n  \n   \n  \n   \n  .bishuLine {\n    margin: 0;\n  }\n   \n  \n   \n    .header {\n      position: running(headerRunning);\n      width: 100%;\n    }\n  \n   \n    .conditional {\n        display : inline-block;\n    }\n\n   \n  \n   \n  .inserted-image{\n    display: inline-block;\n    max-width: 100%;\n    max-height: 100%;\n  }\n   \n\n    .footer {\n      position: running(footerRunning);\n      width: 100%;\n    }\n\n  \n            .pagef13a1ca890654ac69185437a835b11c4{  \n                min-height: 10in;\n                position: relative;\n                background-size: 100% auto; \n                background-image: none;\n                background-repeat: repeat;\n            \n          }\n        </style></headbase64: invalid input

所以可能需要考慮解碼它以在你的 function 中使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM