Skip to main content

AWS Serverless Application Model (SAM)

คืออะไร

AWS SAM เป็น framework สำหรับพัฒนาและ deploy serverless applications บน AWS

คุณสมบัติหลัก

  • เป็น extension ของ CloudFormation — เพิ่ม shorthand syntax สำหรับ serverless
  • SAM Template — ใช้ Transform: AWS::Serverless-2016-10-31
  • Resource types:
    • AWS::Serverless::Function — Lambda function
    • AWS::Serverless::Api — API Gateway
    • AWS::Serverless::SimpleTable — DynamoDB table
    • AWS::Serverless::Application — nested application
    • AWS::Serverless::HttpApi — HTTP API
    • AWS::Serverless::LayerVersion — Lambda Layer
    • AWS::Serverless::StateMachine — Step Functions

SAM CLI

  • sam init — สร้าง project ใหม่
  • sam build — build application
  • sam package — package แล้ว upload ไป S3
  • sam deploy — deploy ไป CloudFormation
  • sam local invoke — test Lambda locally
  • sam local start-api — รัน API Gateway locally
  • sam local start-lambda — รัน Lambda endpoint locally

SAM + CodeDeploy

  • SAM ใช้ CodeDeploy สำหรับ traffic shifting อัตโนมัติ
  • Deployment preferences: Canary, Linear, AllAtOnce
  • Pre/Post traffic hooks สำหรับ validation