AWS 서버리스: SAM

jisoolee·2023년 5월 29일
0

AWS Associate Developer

목록 보기
21/27

AWS SAM(Serverless Application Model)

: 서버리스 애플리케이션 개발 및 배포를 위한 프레임워크로 모든 구성은 YAML 형식으로 실행된다.

  • SAM은 CloudFormation 상에 구축되었으므로 SAM에서는 두 가지 작업을 수행한다. 첫 번째로 Transform 헤더나 YAML로 이는 SAM 템플릿이고, 두번째는 리소스 섹션이다.

Commands to know

  • sam build: 종속성을 불러오고 로컬 배포 아티팩트를 생성
  • sam package: S3에 패키징, 업로드를 수행하고 CloudFormation 템플릿을 생
  • sam deploy: CloudFormation에 배포를 수행

Recipe

Transform Header indicates it's SAM template

  • Transform: 'AWS::Serverless-2016-10-31'

Write Code

  • AWS::Serverless::Function
  • AWS::Serverless::Api
  • AWS::Serverless::SimpleTable

Package & Deploy

  • aws cloudformation package / sam package
  • awd cloudformation deploy / sam deploy

Deep Dive into SAM Deployment

: SAM 템플릿이 sam build로 CloudFormation으로 변환되면 sam package 명령에 따라 Amazon S3로 패키징되어 sam deploy를 써서 CloudFormation에 배포한다.

CLI Debugging

  • AWS Toolkits가 있기 때문에 SAM이 람다를 로컬에서 호출할 수 있다.
  • SAM CLI + AWS 도구 키트는 Lambda 함수를 로컬에서 디버그하고, 변수를 검사하고, 코드를 한 줄씩 실행할 수 있다.

SAM Policy Templates

: 람다 함수에 권한을 설정할 수 있는 템플릿의 목록

  • SAM 정책 템플릿을 사용해서 SAM 함수에 대해 간단히 IAM 정책을 정의할 수 있다.

S3ReadPolicy

: S3 내의 객체에 대하여 읽기 권한만 부여하는 정책 템플릿

SQSPollerPolicy

: 람다 함수가 SQS 대기열을 폴링할 수 있게 한다.

DynamoDBCrudPolicy

: 람다 함수에서 DynamoDB의 테이블을 생성, 업데이트 읽기, 삭제 작업을 수행할 수 있다.

SAM and CodeDeploy

: SAM이 CodeDeploy를 이용하여 람다 함수를 업데이트한다.

  • SAM은 CodeDeploy와 완벽히 통합되어 있으므로 람다 함수와 버전을 람다 별칭에 배포할 수 있다.

Local Capabilities

Locally start AWS Lambda

  • sam local start-lambda

Locally Invoke Lambda Function

  • sam local invoke

Locally Start an API Gateway Endpoint

  • sam local start-api

Generate AWS Events for Lambda Functios

  • sam local generate-event

Serverless Application Repository(SAR)

: 서버리스 애플리케이션 모델을 이용해서 생성 및 패키징 된다.

  • 설정과 환경 변수를 사용해서 배포 시에 SAR로부터 가져오는 애플리케이션을 사용자 지정할 수 있다.

0개의 댓글