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
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
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/*
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: 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")
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 functions
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 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.