aws-sam-cli
A Python CLI for developing, locally testing, building, and deploying AWS serverless applications defined with the Serverless Application Model. It emulates Lambda execution in Docker and wraps the build/package/deploy lifecycle for Lambda, API Gateway, Step Functions, and other AWS services.
Apache-2.0Permissive — free to use in commercial and proprietary software, with attribution.View license →
Production readiness
4/5- Actively maintainedCommits in the last 6 months
- No known vulnerabilitiesNot yet scanned
- Clear, usable licenseApache-2.0 (permissive)
- Proven adoptionWidely used
- Has documentationDocumentation indexed
pip install aws-sam-cliOur analysis
AWS SAM CLI is the official command-line tool for the Serverless Application Model, a CloudFormation-based shorthand for defining serverless infrastructure. It handles init, build, local emulation, sync, deploy, and log/trace tailing for Lambda-centric applications.
When to use aws-sam-cli
Use it when you are committed to AWS and want first-party tooling that locally emulates Lambda and API Gateway in Docker, builds functions for supported runtimes, and deploys via CloudFormation. It pairs well with teams that prefer AWS-native, CloudFormation-backed infrastructure and want quick CI/CD pipeline scaffolding and SAM Accelerate for fast in-cloud iteration.
When not to
If you need multi-cloud support, richer plugin ecosystems, or more abstracted developer ergonomics, the Serverless Framework, AWS CDK, Terraform, or Pulumi may fit better. SAM is also a poor fit for non-serverless or non-AWS workloads, and its template syntax is less expressive than imperative IaC like CDK/Pulumi.
Strengths
- Official AWS tool with deep, up-to-date integration with Lambda, API Gateway, and CloudFormation
- Genuine local emulation of Lambda and API Gateway via Docker for fast feedback
- SAM Accelerate and `sam sync` shorten the cloud iteration loop considerably
- Built-in pipeline scaffolding, log/trace tailing, and a large catalog of starter templates
- Well-tested codebase (cited 95% unit coverage) and active maintenance
Trade-offs
- AWS-only; no multi-cloud abstraction
- Built on CloudFormation, which inherits its slow deploys and stack-state quirks
- SAM template DSL is less flexible than imperative IaC (CDK, Pulumi) for complex logic
- Local emulation requires Docker and never perfectly matches the real Lambda environment
- Overlaps and competes with AWS's own CDK, creating ecosystem fragmentation
Maturity
Mature, production-grade, and actively maintained by AWS with a public roadmap, large contributor base, and broad ecosystem of related repos (SAM Transform, Lambda Builders, app templates).
AWS SAM CLI
Installation | Blogs | Videos | AWS Docs | Roadmap | Try It Out | Slack Us
The AWS Serverless Application Model (SAM) CLI is an open-source CLI tool that helps you develop serverless applications containing Lambda functions, Step Functions, API Gateway, EventBridge, SQS, SNS and more. Some of the features it provides are:
Initialize serverless applications in minutes with AWS-provided infrastructure templates with
sam initCompile, build, and package Lambda functions with provided runtimes and with custom Makefile workflows, for zip and image types of Lambda functions with
sam buildLocally test a Lambda function and API Gateway easily in a Docker container with
sam localcommands on SAM and CDK applicationsSync and test your changes in the cloud with
sam syncin your developer environmentsDeploy your SAM and CloudFormation templates using
sam deployQuickly create pipelines with prebuilt templates with popular CI/CD systems using
sam pipeline initTail CloudWatch logs and X-Ray traces with
sam logsandsam traces
Recent blogposts and workshops
Speeding up incremental changes with AWS SAM Accelerate and Nested Stacks - Read blogpost here.
Develop Node projects with SAM CLI using esbuild - and use SAM Accelerate on Typescript projects. Read blogpost here.
Speed up development with SAM Accelerate - quickly test your changes in the cloud. Read docs here.
AWS Serverless Developer Experience Workshop: A day in a life of a developer - This advanced workshop provides you with an immersive experience as a serverless developer, with hands-on experience building a serverless solution using AWS SAM and SAM CLI.
The Complete SAM Workshop - This workshop is a great way to experience the power of SAM and SAM CLI.
Getting started with CI/CD? SAM pipelines can help you get started - This workshop walks you through the basics.
Get started with Serverless Application development using SAM CLI - This workshop walks you through the basics.
Get Started
To get started with building SAM-based applications, use the SAM CLI. SAM CLI provides a Lambda-like execution environment that lets you locally build, test, debug, and deploy AWS serverless applications.
Install AWS Toolkit to use SAM with your favorite IDEs
Powertools for AWS Lambda is a developer toolkit to implement Serverless best practices and increase developer velocity. Available for Python, Java, TypeScript and .NET.
Next Steps: Learn to build a more complex serverless application.
Extract text from images and store it in a database using Amazon S3 and Amazon Rekognition services.
Detect when records are added to a database using Amazon DynamoDB database and asynchronous stream processing.
What is this Github repository? 💻
This Github repository contains source code for SAM CLI. Here is the development team talking about this code:
SAM CLI code is written in Python. Source code is well documented, very modular, with 95% unit test coverage. It uses this awesome Python library called Click to manage the command line interaction and uses Docker to run Lambda functions locally. We think you'll like the code base. Clone it and run
make pror./Make -pron Windows!
Related Repositories and Resources
SAM Transform Open source template specification that provides shorthand syntax for CloudFormation
SAM CLI application templates Get started quickly with predefined application templates for all supported runtimes and languages, used by
sam initLambda Builders Lambda builder tools for supported runtimes and custom build workflows, used by
sam buildBuild and local emulation images for CI/CD tools Build container images to use with CI/CD tasks
Contribute to SAM
We love our contributors ❤️ We have over 100 contributors who have built various parts of the product. Read this testimonial from @ndobryanskyy to learn more about what it was like contributing to SAM.
Depending on your interest and skill, you can help build the different parts of the SAM project;
Enhance the SAM Specification
Make pull requests, report bugs, and share ideas to improve the full SAM template specification. Source code is located on Github at aws/serverless-application-model. Read the SAM Specification Contributing Guide to get started.
Strengthen SAM CLI
Add new commands, enhance existing ones, report bugs, or request new features for the SAM CLI. Source code is located on Github at aws/aws-sam-cli. Read the SAM CLI Contributing Guide to get started.
Update SAM Developer Guide
SAM Developer Guide provides a comprehensive getting started guide and reference documentation. Source code is located on Github at awsdocs/aws-sam-developer-guide. Read the SAM Documentation Contribution Guide to get started.
Join the SAM Community on Slack
Join the SAM developers channel (#samdev) on Slack to collaborate with fellow community members and the AWS SAM team.