I am using https://github.com/ARautio/aws-lambda-pdf-generator-puppeteer to create pdfs serverlessly. I have made some changes to get html to process as POST data.
I ran command: yarn deploy:prod
to deploy it on aws lambda.
After deploying, when i tried to hit the server, it gave me 500 error.
Code:
console.log("Data", event.body)
const { apiKey = '', html = '', pageConfig = {}, name, customPageConfig = false } = JSON.parse(event.body)
On local, it's working fine, but when I deploy it, it is showing me error:
Data eyJhcGlLZXkiOiAiYXNkc2FkYXNkZWVycnJycnIiLCAiaHRtbCI6ICJcbjxodG1sPjxoZWFkPjxzdHlsZT5cbiAgIC5wYWdlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGFsd2F5cztcbiAgICB9XG5cblxuICAgIEBwYWdlIHtcbiAgICAgIFxuICAgICAgQHRvcC1sZWZ0IHtcbiAgICAgICAgY29udGVudDogZWxlbWVudChoZWFkZXJSdW5uaW5nKTtcbiAgICAgIH1cblxuICAgICAgQGJvdHRvbS1sZWZ0IHtcbiAgICAgICAgY29udGVudDogZWxlbWVudChmb290ZXJSdW5uaW5nKTtcbiAgICAgIH1cblxuICAgIH1cbiAgIFxuICBcbiAgIFxuICBcbiAgIFxuICAuYmlzaHVMaW5lIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgIFxuICBcbiAgIFxuICAgIC5oZWFkZXIge1xuICAgICAgcG9zaXRpb246IHJ1bm5pbmcoaGVhZGVyUnVubmluZyk7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIFxuICAgXG4gICAgLmNvbmRpdGlvbmFsIHtcbiAgICAgICAgZGlzcGxheSA6IGlubGluZS1ibG9jaztcbiAgICB9XG5cbiAgIFxuICBcbiAgIFxuICAuaW5zZXJ0ZWQtaW1hZ2V7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICB9XG4gICBcblxuICAgIC5mb290ZXIge1xuICAgICAgcG9zaXRpb246IHJ1bm5pbmcoZm9vdGVyUnVubmluZyk7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgXG4gICAgICAgICAgICAucGFnZWYxM2ExY2E4OTA2NTRhYzY5MTg1NDM3YTgzNWIxMWM0eyAgXG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogMTBpbjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87IFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDtcbiAgICAgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgPC9zdHlsZT48L2hlYWQ==
Logs from production server:
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
I am sending:
{
"apiKey": "asd",
"html": "<h1>Hello</h1>",
"pageConfig": {
"size": "A4"
}
}
The payload you are parsing is base64 encoded.
Looks like you would need to decode it first before you can access it.
Ideally you should use base 64 encoded content in both environments, however if you want to control logic based on environment then use Lambda Environment Variables .
If you decode your payload (base64):
base64 -d <<< eyJhcGlLZXkiOiAiYXNkc2FkYXNkZWVycnJycnIiLCAiaHRtbCI6ICJcbjxodG1sPjxoZWFkPjxzdHlsZT5cbiAgIC5wYWdlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGFsd2F5cztcbiAgICB9XG5cblxuICAgIEBwYWdlIHtcbiAgICAgIFxuICAgICAgQHRvcC1sZWZ0IHtcbiAgICAgICAgY29udGVudDogZWxlbWVudChoZWFkZXJSdW5uaW5nKTtcbiAgICAgIH1cblxuICAgICAgQGJvdHRvbS1sZWZ0IHtcbiAgICAgICAgY29udGVudDogZWxlbWVudChmb290ZXJSdW5uaW5nKTtcbiAgICAgIH1cblxuICAgIH1cbiAgIFxuICBcbiAgIFxuICBcbiAgIFxuICAuYmlzaHVMaW5lIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgIFxuICBcbiAgIFxuICAgIC5oZWFkZXIge1xuICAgICAgcG9zaXRpb246IHJ1bm5pbmcoaGVhZGVyUnVubmluZyk7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIFxuICAgXG4gICAgLmNvbmRpdGlvbmFsIHtcbiAgICAgICAgZGlzcGxheSA6IGlubGluZS1ibG9jaztcbiAgICB9XG5cbiAgIFxuICBcbiAgIFxuICAuaW5zZXJ0ZWQtaW1hZ2V7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICB9XG4gICBcblxuICAgIC5mb290ZXIge1xuICAgICAgcG9zaXRpb246IHJ1bm5pbmcoZm9vdGVyUnVubmluZyk7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgXG4gICAgICAgICAgICAucGFnZWYxM2ExY2E4OTA2NTRhYzY5MTg1NDM3YTgzNWIxMWM0eyAgXG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogMTBpbjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87IFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDtcbiAgICAgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgPC9zdHlsZT48L2hlYWQ==
you will get:
{"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
So probably have to look at decoding it to use it in your function.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.