티스토리 뷰
AWS SAM(Serverless Applicaion Model)
- 서버리스 애플리케이션을 만드는 오픈소스 프레임워크
- JSON/YAML
- 클라우드 포메이션(IaC) 스택 형태로 배포되는 형태로 만들수 있음(카나리 블루/그린 배포)
SAM TEMPLATE
- Lambda function
- IAM role
- API Gateway
- DynamoDB table
SAM CLI를 통해서 로컬에서 개발하고 테스트할 수 있는 기능을 제공
sam local을 이용해서 로컬에서 람다 서버를 실행이 되고 로컬에서 람다 환경(서버리스 애플리케이션 환경) 컨테이너가 뜨게 되고 컨테이너 안에 환경이 property의 환경이 적용되서 로컬에서 컨테이너로 뜨게 됨
sam template 안에 서버리스 애플리케이션의 정의가 되어있음
Resources:
HelloWorldFuctuin:
Type: AWS::Serverless::Fuction // 람다함수 매핑
Properties:
CodeUri: hello-world/ // 람다함수 디렉토리
Handler: app.lambdaHandler // 람다함수 핸들러
Runtime: nodejs14.x
Architectures:
- x86_64
Events:
HelloWorld:
Type: Api // API Gateway가 /hello path로 GET으로 요청이 들어오면 람다함수를 호출하게 설정
Properties:
Path: /hello
Method: get
sam build를 하게 되면 npm 등 필요한 라이브러리들을 build 디렉토리에 다 가져와서 모아놓고 배포할 준비를 하게됨
sam build
# local에서 실행이 되서 반환
sam local invoke
# 해당 path로 컨테이너가 뜨고 이렇게 hello get요청을 날리게 되면 메시지가 떨어지고 관련된 로그 볼수 있음
sam local start-api
local에서 빠르게 개발하고 할수 있음
서버에서 올려서 테스트 할 상황이 생김
시스템 내에 다른거나 연동되거나 할때 로컬에서 테스트할때 시간이 걸리거나 잘 안되는 경우가 일 부 있음
SAM Acclerate- Beta 기능
내 코드가 변경되었을때 클라우드 포메이션 셀을 타지 않고 코드만 업데이트해서 빠른 코드 반영이 가능