[英]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.