Serverless applications strip software down to the barest of essentials: one short snippet of code, invoked and scaled on demand. Serverless is just the ticket for smaller apps, like a simple API or a single webpage, that don’t need the management overhead of an entire server or virtual machine. A serverless system simplifies life for the developer, and delivers elasticity on a scale that fits the job.
AWS Lambda is among the best-known of the serverless systems out there, but like many things Amazon (and many things cloud) it can cut your fingers if you try to grasp it with bare hands. Here is a collection of tools, frameworks, and projects designed to make it easier to set up, deploy, and manage AWS Lambda functions.
AWS Serverless Application Model (AWS SAM)
Amazon has long been known for offering the infrastructure first and the tooling second. The AWS Serverless Application Model, introduced in late 2016 (roughly two years after AWS Lambda), is described by Amazon as an “open-source framework for building serverless applications” for AWS Lambda.
AWS SAM is essentially a way to generate AWS CloudFormation application definitions for AWS Lambda functions, with less work. Like Kappa (discussed below), you create a YAML template that defines your application, then the YAML is transformed into AWS CloudFormation declarations. SAM also provides a way to locally test the defined application, provides tools for stepping through AWS Lambda functions (in Node.js, Python, or Go), and works with Amazon’s CodeDeploy to support revisions to functions.