I was working for a client on a serverless solution. The goal is to use serverless to deploy a nodejs application that monitoring S3 bucket and do certain task when there is a bucket event.
The project does not have container in place. so Jenkins slave is actually a centos ec2 instance. Because of the tied environment I’m working with. So I had a few file permission issue.
The way I use to resolve this issues is to give all file under node_module 644 and all directories 755.
sudo find /workspace/node_modules -type d -exec chmod 755 {} + sudo find /workspace/node_modules -type f -exec chmod 644 {} +
This will help the jenkins pipeline to build.
In my case, the build went success, I have the lambda, s3 event, and logs are all in place. So I did a test on the trigger. it did hooked up the lambda function. But I was again got a permission issue when the lambda executes.
EACCES: permission denied, open '/var/task/node_modules/handler.js' EACCES: permission denied, open '/var/task/node_modules/aws-sdk/..'
So it ends up having issue to execute the code from lambda. I added the following code in my pipeline and it fixes the problem.
sh "chmod 755 ${WORKSPACE}/handler.js" sh "chmod 755 -R ${WORKSPACE}/node_modules/aws-sdk"