TechWriterDev
  • Cloud
    • AWS
      • 00_Doubts
      • CloudPractitioner
        • Cloud Computing
        • AWS Global Infrastructure
        • Introduction to AWS EC2
        • Elastic load balancer(ELB)
        • 04_Messaging_Queuing
        • Aditional Computing Service
        • Accessing AWS resources
        • AWS Networking
        • Storage
        • Amazon Database Solutions
        • Monitoring Tools
        • AWS Security
        • Distributed Denial Of Service Attacks
      • DeveloperAssociate
        • References
        • AWS DVA-C02 Services Index
        • Services
          • 00_IAM
            • Identity and Access Management (IAM)
            • Account Protection Mechanisms
            • Access Mechanism of AWS Resources
            • Security Tools
            • Responsibility Model
            • Advanced Concepts
          • 01_EC2
            • Elastic Compute Cloud (EC2)
            • EC2 Volume Types
            • Amazon Machine Image (AMI)
            • AWS charges for IPv4 address
          • 02_SecurityGroups
            • Security Groups
          • 03_Elastic_LoadBalancing
            • Terminology
            • Elastic load balancer
            • Features
            • Basics
          • 04_AutoScaling
            • Auto Scaling
          • 05_RDS
            • Relational Database Service (RDS)
            • Aurora
            • Security
            • RDS Proxy
          • 06_ElastiCache
            • Cache
            • Cache Offerings
          • 07_Route53
            • Basics of DNS
            • Route 53
          • 08_VPC
            • Virtual Private Cloud (VPC)
          • 09_S3
            • Simple Storage Service (S3)
            • S3 Features
            • S3 Encryption
            • S3 Features
            • S3 Bucket Policy and IAM Policy
          • 10_ECS
            • Elastic Container Service (ECS)
            • Elastic Container Registry (ECR)
            • AWS Copilot
          • 11_EKS
            • Elastic Kubernetes Service (EKS)
          • 12_SDK_CLI_Tips
            • Access AWS Resources
          • 13_CloudFront
            • Cloud Front
          • 14_Messaging
            • Simple Queue Service (SQS)
            • Simple Notification Service (SNS)
            • Fan Out Pattern
            • Kinesis
            • Compare and Contrast
          • 15_ElasticBeanStalk
            • Elastic Beanstalk
          • 16_CloudFormation
            • CloudFormation
            • Dynamic References
          • 17_Monitoring
            • AWS Monitoring
            • AWS CloudWatch
            • CloudWatch Alarms
            • Synthetics Canary
            • Amazon EventBridge (formerly CloudWatch Events)
            • X-Ray
            • OpenTelemetry
            • CloudTrail
          • 18_Lambda
            • Lambda
            • Lambda Integrations
            • Configuring Lambda
            • Lambda Layers
          • 19_API_Gateway
            • API Gateway
            • API Gateway Integrations
          • 20_DynamoDB
            • DynamoDB
            • Operations
            • Indexes
            • DynamoDB Accelerator (DAX)
            • DynamoDB Streams
            • Transactions
            • Integrations
          • 21_CICD
            • CICD
            • CodeCommit
            • CodePipeline
            • CodeBuild
            • CodeDeploy
            • CodeArtifact
            • CloudGuru
          • 22_SAM
            • Serverless Application Model (SAM)
          • 23_CDK
            • Cloud Development Kit (CDK)
          • 24_StepFunctions
            • Step Functions
            • Types of step function
          • 25_AppSync
            • AppSync
          • 26_Amplify
            • Amplify
          • 27_STS
            • Security Token Service (STS)
          • 28_DirectoryService
            • Active Directory
          • 29_KMS
            • Encryption
            • KMS API
            • Features
            • Cloud Hardware Security Module (HSM)
          • 30_SSM_Store
            • SSM Parameter Store
          • 31_SecretsManager
            • Secrets Manager
          • 32_Cognito
            • Cognito
      • Questions
        • AWS_Region
        • EC2
        • IAM
  • Database
    • MongoDb
      • Mongo db Basics
      • Mongo DB Atlas
      • Document
      • Import-Export based on Data Format
      • Mongo Shell Commands
      • Query Operators
      • Indexes
      • Upsert
      • MongoDB Aggregation Framework
      • Aggregation Framework Operators
    • PostgreSQL
      • POSTGRE SQL DataTypes
      • About table
      • Constraints
  • Technologies
    • RabbitMQ
      • RabbitMQ Concepts
      • Introduction to Exchanges
      • Introduction to Queues
    • Terraform
      • 00_Introduction
      • Configuration blocks
      • Commands
      • Variables
      • Terraform Cloud
      • Modules
  • Languages
    • Java
      • Logging
        • Getting Started
      • 00_Core
        • 00_Basics
          • Java Vs C++
          • Object oriented principles
          • Steps to compile a java program
          • JVM Internals
          • Understanding Java Development Kit
          • What is JIT Compiler?
          • Java data types
          • 07_identifiers_type_conversion
          • 08_references_and_packages
          • Steps for attaching scanner
        • Concurrency
          • 00_Threads
            • Threads
          • 01_ExecutorFramework
            • Executor Framework
            • Asynchronous Computation
      • 01_Backend
        • 01_HttpAndWebServerBasics
          • HTTP
          • Content Type
          • Web Server
        • 02_J2EE_Basics
          • J2EE_Basics
          • Why HttpServlet classs is declared as abstract class BUT with 100 % concrete functionality ?
        • 03_TomCatAndSession
          • What is a Session?
          • WebContainer
        • 04_PageNavigation
          • Cookies Additional Information
          • Page Navigation Techniques
        • 05_AboutServlet
          • CGI v/s Servlet
          • Executor Framework
          • Servlet Life cycle
          • SERVLET CONFIG
          • Servlet Context
          • Servlet Listener (web application listener)
        • 08_SpringBoot
          • Spring Boot
          • Some common annotations used in spring eco system
        • 09_SpringDataJPA
          • Spring Data JPA
        • Java_Language_Changes
          • JDK enhancement tracking reference
        • 06_ORM_Hibernate
          • readmes
            • Hibernate
            • Advantages of Hibernate
            • Hibernate Caching
            • Hibernate API
            • Hibernate Query API
            • Hibernate Annotations and JPQL
            • Entity and Value Type
        • 07_SpringFramework
          • bean_validation
            • Bean Validation
          • core
            • readme
              • Spring
              • Spring Framework Modules
              • Spring MVC Request flow
              • Dependency Injection
              • Spring Beans
              • 06_Spring_Framework_Annotations
      • 03_Tools
        • Maven
          • Maven
  • SoftwareEngineering
    • DesignPatterns
      • Notes
        • Basics
        • OOP
        • SOLID Principles
        • 03_Creational
          • Abstract Factory (aka Kit)
          • Builder
          • Factory Method (aka Virtual constructor)
          • Prototype
          • Singleton
        • 04_Structural
          • Adapter (aka Wrapper)
          • Bridge (aka Handle | Body)
          • Composite
          • Decorator (aka Wrapper)
          • Facade
          • Flyweight
          • Proxy (aka Surrogate)
        • 05_Behavioral
          • Chain of Responsibility
          • Command (aka Action | Transaction)
          • Iterator (aka Cursor)
          • Observer (aka Publish-Subscribe | Dependents)
          • Strategy (aka Policy)
    • Principles
      • REST
        • REST
  • Tools
    • Containers
      • Docker
        • Docker
        • Docker Image
        • Commands
        • Compose
        • Best Practices
      • Kubernetes
        • Kubernetes
    • VCS
      • Git
        • Quick reference of useful Git commands
Powered by GitBook
On this page
  • Mascot
  • About
  • SAM Recipe
  • Deep Dive
  • SAM Accelerate
  • SAM policy templates
  • Local Capability
  • Multiple environments
  • Integrations
  • SAM and CodeDeploy
  1. Cloud
  2. AWS
  3. DeveloperAssociate
  4. Services
  5. 22_SAM

Serverless Application Model (SAM)

Previous22_SAMNext23_CDK

Last updated 4 months ago

Mascot

About

  • Transform header indicates it's SAM model.

  • Framework for developing and deploying serverless applications.

  • All the configuration is YAML code.

  • Generate complex CloudFormation from simple SAM YAML file.

  • Supports anything from CloudFormation such as Outputs, Mappings, Parameters, Resources etc.

  • SAM can use CodeDeploy to deploy Lambda functions.

  • SAM can help you to run Lambda, API Gateway, DynamoDB locally.

SAM Recipe

  • Transform Header indicates it's SAM template.

    Transform: 'AWS::Serverless-2016-10-31'
  • Once SAM template YAML file is created, use sam deploy command ( optionally can use sam package command).

  • Can use sam sync --watch command to quickly sync local changes to AWS Lambda using SAM Accelerate.

Deep Dive

  1. SAML Template YAML is first build using sam build command.

  2. After build phase, cloud formation template (YAML) file is generated out of it.

  3. Zip and upload S3 the artifacts generated to S3 bucket.

  4. Use sam deploy command to deploy or execute the changeset.

  5. CloudFormation stack is made up of Lambda, API Gateway and DynamoDB.

SAM Accelerate

  • It is a set of features to reduce latency while deploying resources to AWS.

  • sam sync synchronizes the project declared in SAM templates to AWS.

  • It can synchronize code changes to AWS without updating infrastructure (internally it uses service APIs and bypass CloudFormation).

sync command

Command
Description

sam sync

Synchronizes code and infrastructure

sam sync --code

Synchronizes code changes without updating infrastructure (bypass CloudFormation, update in seconds)

sam sync --code --resource <resource>

Synchronize only a specific resource and their dependencies

sam sync --code --resource-id <resource-id>

Synchronize only resource with specific resource id and their dependencies

sam sync --watch

Monitor for file changes and automatically synchronize when changes are detected. If includes configuration changes, it uses sam sync

SAM policy templates

  • It is a list of templates to apply permission to your Lambda functions.

  • From the above policy list following are important.

    • S3ReadPolicy

    • SQSPollerPolicy

    • DynamoDBCrudPolicy

Local Capability

Lambda

Start Lambda

  • By using SAM framework, you can start AWS Lambda locally.

  • This will start a local endpoint that emulates AWS Lambda.

  • This can be used to run automated test against local endpoint.

  • Command : sam local start-lambda.

Invoke Lambda

  • Local invocation can be done using sam local invoke command.

  • Local invocation will invoke lambda once and quit after invocation completes.

  • Helpful for generating test cases.

  • If lambda tries to access some other AWS resource make sure to pass the relevant profile using the --profile option.

Generate Event

  • Generate events for lambda functions using command sam local generate-event.

API Gateway

  • Locally start an API Gateway endpoint using the command sam local start-api.

  • Starts a local HTTP server that hosts all your functions.

  • Changes to functions are automatically reloaded.

Multiple environments

  • This configuration file can be passed while deploying resources using SAM command line.

  • Command can be given as follows,

        sam deploy --config-env <env>
        # Example
        sam deploy --config-env prod

Integrations

SAM and CodeDeploy

  • SAM Framework natively uses CodeDeploy to update and LambdaFunctions.

  • Traffic Shifting features using Alias is used for update.

    • AutoPublishAlias Parameter in SAM template file takes care of this.

  • Pre and Post traffic hooks feature to validate deployment (before traffic shift starts and after it ends).

  • Easy and automated rollbacks using CloudWatch Alarms.

  • Also has capability to provide Deployment Preference like Canary, Linear, AllAtOnce.

  • Alarms can trigger a rollback.

Write code using

helps to build and deploy sam template.

Policy templates list can be found .

file can be used to configure environment specific parameters.

SAM constructs
SAM commands
here
TOML
AWS SAM Mascot