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: '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
Locally Invoke Lambda Function
Locally Start an API Gateway Endpoint
Generate AWS Events for Lambda Functios
Serverless Application Repository(SAR)
: 서버리스 애플리케이션 모델을 이용해서 생성 및 패키징 된다.
- 설정과 환경 변수를 사용해서 배포 시에 SAR로부터 가져오는 애플리케이션을 사용자 지정할 수 있다.