Archive

The Dulin Report

Browsable archive from the WordPress export.

Results (54)

On the role of Distinguished Engineer and CTO Mindset Apr 27, 2025 Software Engineering is here to stay Mar 3, 2024 Some thoughts on recent RTO announcements Jun 22, 2023 Some thoughts on the latest LastPass fiasco Mar 5, 2023 Working from home works as well as any distributed team Nov 25, 2022 If we stop feeding the monster, the monster will die Nov 20, 2022 Why I am a poll worker since 2020 Nov 11, 2022 Using GNU Make with JavaScript and Node.js to build AWS Lambda functions Sep 4, 2022 Scripting languages are tools for tying APIs together, not building complex systems Jun 8, 2022 Automation and coding tools for pet projects on the Apple hardware May 28, 2022 Am I getting old or is it really ok now to trash your employer on social media? May 25, 2022 Peloton could monetize these ideas if they only listen May 15, 2022 Most terrifying professional artifact May 14, 2022 Good idea fairy strikes when you least expect it May 2, 2022 A year of COVID taught us all how to work remotely Feb 10, 2021 Should we abolish Section 230 ? Feb 1, 2021 This year I endorse Joe Biden for President Aug 26, 2020 Making the best of remote work - Coronavirus blues Mar 16, 2020 The passwords are no longer a necessity. Let’s find a good alternative. Mar 2, 2020 All emails are free -- except they are not Feb 9, 2019 Returning security back to the user Feb 2, 2019 Which AWS messaging and queuing service to use? Jan 25, 2019 Using Markov Chain Generator to create Donald Trump's state of union speech Jan 20, 2019 Adobe Creative Cloud is an example of iPad replacing a laptop Jan 3, 2019 A conservative version of Facebook? Aug 30, 2018 Fixing the Information Marketplace Aug 26, 2018 On Facebook and Twitter censorship Aug 20, 2018 What does a Chief Software Architect do? Jun 23, 2018 Facebook is the new Microsoft Apr 14, 2018 Quick guide to Internet privacy for families Apr 7, 2018 Leaving Facebook and Twitter: here are the alternatives Mar 25, 2018 When politics and technology intersect Mar 24, 2018 The technology publishing industry needs to transform in order to survive Jun 30, 2017 Architecting API ecosystems: my interview with Anthony Brovchenko of R. Culturi Jun 5, 2017 Don't trust your cloud service until you've read the terms Sep 27, 2016 I am addicted to Medium, and I am tempted to move my entire blog to it Sep 9, 2016 Amazon Alexa is eating the retailers alive Jun 22, 2016 In search for the mythical neutrality among top-tier public cloud providers Jun 18, 2016 In Support Of Gary Johnson Jun 13, 2016 LinkedIn needs a reset Feb 13, 2016 In memory of Ed Yourdon Jan 23, 2016 We Live in a Mobile Device Notification Hell Aug 22, 2015 Ten Questions to Consider Before Choosing Cassandra Aug 8, 2015 On Maintaining Personal Brand as a Software Engineer Aug 2, 2015 Social Media Detox Jul 11, 2015 Book Review: "Shop Class As Soulcraft" By Matthew B. Crawford Jul 5, 2015 We Need a Cloud Version of Cassandra May 7, 2015 Ordered Sets and Logs in Cassandra vs SQL Apr 8, 2015 Microsoft and Apple Have Everything to Lose if Chromebooks Succeed Mar 31, 2015 On apprenticeship Feb 13, 2015 Configuring Master-Slave Replication With PostgreSQL Jan 31, 2015 Cassandra: Lessons Learned Jun 6, 2014 Thoughts on Wall Street Technology Aug 11, 2012 Scripting News: After X years programming Jun 5, 2012

Using GNU Make with JavaScript and Node.js to build AWS Lambda functions

September 4, 2022

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 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 functions

The 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.