[英]Error while parsing event.body at AWS API Gateway Lambda nodejs handler
[英]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.