Task Breakdown
- Install the AWS SAM CLI on your local machine
- Create an S3 bucket
- Use `sam package` to package our code and save it in S3
- Use `sam deploy` to deploy a Lambda function using CloudFormation
Install SAM CLI
Create an S3 bucket
Make user your IAM user has access to S3
aws iam get-user
Then find the user in IAM to make sure it has
`AmazonS3FullAccess`
Create an S3 bucket
aws s3 mb s3://<bucket-name> --region us-esat-1
Resource files:
Lambda.yml
AWSTemplateFormatVersion: "2010-09-09" Transform: AWS::Serverless-2016-10-31 Resources: TestFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs12.x Environment: Variables: S3_BUCKET: <YOUR_BUCKET_NAME>
index.js
exports.handler = (event, context, callback) => { // TODO implement const response = { statusCode: 200, body: JSON.stringify('Hello Cloud Gurus, This Lambda Function was deployed using SAM!') }; callback(null, response); };
SAM package
Make sure put those two files in the same folder and run cmd:
sam package --template-file ./Lambda.yml --output-template-file sam-template.yml --s3-bucket <YOUR_BUCKET_NAME>
Replacae <Your_BUCKET_NAME>.
That cmd will package our code and output `sam-template.yml` file in our folder.
SAM deploy
Now it's time to deploy:
sam deploy --template-file sam-template.yml --stack-name <STACK_NAME> --capabilities CAPABILITY_IAM
Make sure you have permission to deploy the CloudFormation. If you have AdminAccess then it is fine. Otherwise, you need to give `EC2, CloudFormation, S3, Lambda, IAM full access`.
Lambda
Last, you can go to Lambda, find newly create lambda, run the test, to make sure, SAM has deploy a Lmabda by using CloudFormation.
Summary
If you want to deploy a serverless function, you can use SAM CLI.
- It create bucket on S3 and save the CloudFormation template
- sam package & sam deploy cmds.