How to use the command `sam` (with examples)
- Linux
- November 5, 2023
The sam
command refers to the AWS Serverless Application Model (SAM) CLI, which is a tool used for developing, testing, and deploying serverless applications on AWS. It provides a simplified way to define the resources needed for your application, such as AWS Lambda functions, API Gateway APIs, and Amazon DynamoDB tables, among others.
Use case 1: Initialize a serverless application
Code:
sam init
Motivation: The sam init
command is used to initialize a new serverless application. When you run this command, SAM will ask you a series of questions to generate a starter template for your application. You can choose from various language runtimes such as Python, Node.js, Go, Java, and .NET Core. This command is useful when you start building a new serverless application and want to quickly generate the basic boilerplate code.
Use case 2: Initialize a serverless application with a specific runtime
Code:
sam init --runtime python3.7
Motivation: The sam init
command with the --runtime
flag allows you to specify a specific runtime for your serverless application. In this example, we specify the Python 3.7 runtime. By default, the CLI sets the Python 3.7 runtime, but you can use the --runtime
flag to choose a different runtime if needed.
Use case 3: Package a SAM application
Code:
sam package
Motivation: The sam package
command is used to package your SAM application. This command takes your SAM template file and uploads any local artifacts (e.g., Lambda function code) to an S3 bucket. The packaged template is then saved to your local filesystem. Packaging your application is necessary before deploying it to AWS.
Use case 4: Build your Lambda function code
Code:
sam build
Motivation: The sam build
command is used to build your Lambda function code. This command will inspect your SAM template and determine the dependency tree for your functions. It will then build any functions that have not been built yet, based on the dependencies. This is useful when you have made changes to your Lambda function code and want to build the updated version before deploying.
Use case 5: Run your serverless application locally
Code:
sam local start-api
Motivation: The sam local start-api
command allows you to run your serverless application locally. This is useful for testing and debugging your application before deploying it to AWS. This command starts a local API Gateway server and allows you to send requests to your Lambda functions running locally.
Use case 6: Deploy an AWS SAM application
Code:
sam deploy
Motivation: The sam deploy
command is used to deploy your AWS SAM application. This command takes your packaged SAM template, uploads it to an S3 bucket, and creates the necessary AWS CloudFormation stack. Your application resources, such as Lambda functions and API Gateway APIs, will be provisioned based on the SAM template. This is the final step in the deployment process.
Conclusion:
The sam
command is a powerful tool for developing, testing, and deploying serverless applications on AWS. It provides a streamlined workflow for defining your application’s resources and deploying them to the cloud. The use cases covered in this article demonstrate how to use the different sam
subcommands to initialize a new application, package and build your code, run the application locally for testing, and deploy it to AWS.