AWS Lambda is a powerful serverless computing service that allows developers to run code without provisioning or managing servers. However, testing and debugging Lambda functions directly in the AWS cloud can be time-consuming and costly. To streamline development, AWS provides the AWS Serverless Application Model (AWS SAM CLI), which enables developers to simulate AWS Lambda locally.
In this article, we will cover:
- Installing AWS SAM CLI
- Deploying and running Lambda functions locally
- Debugging AWS Lambda locally using SAM logs
Prerequisites
Before proceeding, ensure that you have the following installed on your system:
- AWS CLI: Install AWS CLI
- AWS SAM CLI: Install AWS SAM CLI
- Docker (for running Lambda functions locally): Install Docker
- Python 3.x (or Node.js, depending on your Lambda function language)
- An AWS account (optional for local testing, required for deployment)
Step 1: Installing AWS SAM CLI
To install AWS SAM CLI, follow these steps:
On Windows
- Download the latest AWS SAM CLI installer from AWS SAM CLI downloads.
- Run the installer and follow the setup wizard.
- Verify installation:
sam --version
On macOS (Homebrew)
brew install aws-sam-cli
sam --version
On Linux
curl -Lo "aws-sam-cli-linux.zip" https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip
unzip aws-sam-cli-linux.zip -d sam-installation
sudo ./sam-installation/install
sam --version
Step 2: Creating and Running a Lambda Function Locally
Initialize a New Lambda Function
Use the AWS SAM CLI to initialize a new project:
sam init
Choose:
- Quick start templates: AWS Quick Start Templates
- Runtime: Python 3.9 (or Node.js, Go, etc.)
- Project name:
my-lambda
This generates a project structure with a template.yaml
file, defining the Lambda function and API Gateway.
Writing a Simple Lambda Function
Navigate to the function directory and open app.py
:
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': 'Hello, AWS Lambda!'
}
Running the Function Locally
- Build the function:
sam build
- Start the local environment:
sam local invoke "HelloWorldFunction"
Step 3: Deploying the Lambda Function
Packaging and Deploying
To deploy the function to AWS:
- Configure AWS credentials (if not set up):
aws configure
- Package and deploy:
Follow the prompts to create a CloudFormation stack.sam deploy --guided
Step 4: Debugging AWS Lambda Locally
Viewing Logs with SAM Logs
After running the function locally or deploying it, view logs using:
sam logs -n HelloWorldFunction --tail
Enabling Debug Mode
Run the function in debug mode:
sam local invoke "HelloWorldFunction" -d 5858
Attach a debugger in your IDE to the 5858
port.
Conclusion
By following these steps, you can simulate AWS Lambda locally using AWS SAM CLI. This method helps streamline development, debugging, and deployment processes, allowing you to test serverless applications efficiently before deploying them to the cloud.