Task Breakdown

  1. Install the AWS SAM CLI on your local machine
  2. Create an S3 bucket
  3. Use `sam package` to package our code and save it in S3
  4. 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 



Create an S3 bucket

aws s3 mb s3://<bucket-name> --region us-esat-1


Resource files:


AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
    Type: AWS::Serverless::Function
      Handler: index.handler
      Runtime: nodejs12.x



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`.



Last, you can go to Lambda, find newly create lambda, run the test, to make sure, SAM has deploy a Lmabda by using CloudFormation.



If you want to deploy a serverless function, you can use SAM CLI.

  1. It create bucket on S3 and save the CloudFormation template
  2. sam package & sam deploy cmds.