Using GNU Make with JavaScript and Node.js to build AWS Lambda functions
GNU Make is an automation tool that produces executables and other non-source assets. It can be used to coordinate a variety of tasks, from the compilation of code to the transcoding of media files.
Make uses a file called
In the upcoming series of articles, I will show examples of using
A Node.js - based Lambda function is deployed as a
Suppose you have a Lambda structured as follows:
Your goal is to rebuild the
If you modify any JavaScript files, or
What you also want to do is create a
Finally, you can add a deploy target to deploy the zip file to AWS:
Note how
The complete
You can find more documentation on
In upcoming posts, I will discuss using
Make uses a file called
Makefile to determine what needs to be built when it needs to be built, and how.In the upcoming series of articles, I will show examples of using
make to orchestrate builds of JavaScript apps. Today, I want to talk about using make to build Node.js-based Lambda functions.A Node.js - based Lambda function is deployed as a
zip file to AWS. It has a single main entry point, typically index.js, and it has a handler function. I won't get into the details of building Node.js Lambdas because you can find many more details in AWS Documentation.Suppose you have a Lambda structured as follows:
./lambda
index.js
package.json
Makefile
Your goal is to rebuild the
lambda.zip file only if the source files change. Your Makefile will look like this:lambda.zip: *.js package.json
npm install
zip -r lambda.zip *.js *.json node_modules/*
If you modify any JavaScript files, or
package.json, and type make, it will determine that lambda.zip is outdated and rebuild it.What you also want to do is create a
clean target:clean:
rm -f lambda.zip
Finally, you can add a deploy target to deploy the zip file to AWS:
deploy: lambda.zip
$(info "Run AWS Commands to deploy this Lambda")
Note how
deploy target depends on lambda.zip target — if there is no zip file, there is nothing to deploy. I will leave it up to you to figure out how to deploy Node.js AWS Lambda functionsThe complete
Makefile now looks like this:
lambda.zip: *.js package.json
npm install
zip -r lambda.zip *.js *.json node_modules/*
clean:
rm -f lambda.zip
deploy: lambda.zip
$(info "Run AWS Commands to deploy this lambda")
Some final thoughts
You can find more documentation on
make here. make is available on UNIX-like operating systems, i.e. Linux and Mac OS X, and can be installed on Windows.In upcoming posts, I will discuss using
make for Node.js Docker services and front-ends.