Hacker News new | ask | show | jobs
by scarface74 1214 days ago
At least with Lambda it really is easy, just use Serverless Application Model and when you do “sam build” choose “--use-container”. It will look at your CloudFormation template where you are referring to the local directory containing your source code and requirements.txt and download and build in the appropriate Docker container for your language, version and architecture.

It works great when you have native dependencies.

1 comments

I assume that means container based Lambdas, which would have slower cold start times and maybe some other disadvantages, but yes, it would be simpler.
No. You just build zip file based Lambdas locally using containers.

In your CFT you specify the local directory and the architecture.

SAM will download the Amazon Linux container for your language runtime locally using the correct architecture (x86 or ARM) and download the correct dependencies based on your architecture and package everything in a local folder. It will then output a modified template pointing to the local folder where your Lambda was built. It will contain your source code and dependencies that are compatible with Amazon Linux.

“sam package” will then zip the files up built by Sam build and upload them to S3. It will then create another template that references the zip file in S3.

“Sam deploy” will deploy the standard zip file based Lambda.

This lets you build zip file based Lambdas locally including Amazon Linux native dependencies on either Windows, Macs or other versions of Linux.

Ah, that is nice, and an improved experience.