Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Expose a handler function to Lambda from a Docker Image

I'm trying to build a hello world example of a docker image powering a lambda function.

My docker image houses a NPM project that looks like this:

project
│   app.js
|   Dockerfile
|   package.json
|   package-lock.json

The code inside app.js is:

// app.js
module.exports.lambdaHandler = async (event, context) => {
  console.log('Code Running Inside Handler Function');
  console.log(event);
  console.log(context);
  return "Hello World.";
}

I dockerize my app with this CMD layer in my docker file:

CMD [ "app.lambdaHandler" ]

I upload the docker image to AWS and try to run it as a lambda function. However I get the follow runtime error:

Cannot find module '/project/app.lambdaHandler'

How am I supposed to expose 'lambdaHandler' to aws?

Edit to include my docker file:

FROM node:16

COPY app.js ./

CMD [ "app.lambdaHandler" ]
like image 936
YAHsaves Avatar asked Nov 16 '25 08:11

YAHsaves


1 Answers

When using custom image for AWS lambda container, some steps have to be undertaken to prepare it for a lambda environment. They include, among other things:

  • Installing the runtime interface client.
  • Setting the ENTRYPOINT property to invoke the runtime interface client.

But the easiest way would be to use AWS provided base images.

like image 79
Marcin Avatar answered Nov 18 '25 06:11

Marcin



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!