공부하다 너무 어려워서 일단 끄적여본다..
일단,
sam(serverless application model)
서버리스 앱을 만들기 위한 오픈소스 프레임 워크
✏️ 일단 serverless란?
개발자가 서버를 관리할 필요 없이 app을 빌드하고 실행할수 있도록하는 클라우드 네이티브 개발모델이다. 서버가 존재하지만 application이 구동될때에만 활성화가 된다.
✏️ 그럼 SAM은?
serverless application model의 줄임말로 serverless application 생성를 위한 오픈소스 프레임워크이다. 아주 간단히 말하면 서버리스 애플리케이션을 보다 쉽게 개발, 테스트, 배포할 수 있도록 도와주는 도구!
SAM은 CloudFormation을 간단하게, web 개발에 쓰이는 것들만 사용할 수 있도록 해준다.
Api gateway 와 lambda를 따로 생성한 뒤 연결하여 같은 기능을 하도록 구현할 수 있으나, SAM을 사용하면 생성 및 연결 작업을 모두 진행해주기 때문에 훨씬 간편하게 구현이 가능하다.
YAML 또는 JSON 형식을 사용하여 에플리게이션을 정의함.

위 캡처화면을 보면 SAM은 Lambda 함수, API Gateway, DynamoDB 테이블 등과 같은 AWS 리소스를 정의하고 배포할 수 있는 템플릿을 제공한다.
SAM CLI
SAM에서 제공하는 도구고, 서버리스 애플리케이션 개발을 지원. 주로 SAM 프레임워크와 사용

위의 사진이 SAM CLI 단축 구문인데, 간단한 템플릿을 사용하여 람다나 api등을 설명하는데 사용할수 있는 위와 같은 단축 구문을 제공한다.
✏️sam init
서버리스 애플리케이션 프로젝트를 초기화할 때 사용
✏️sam build
sam build 명령어는 SAM 애플리케이션을 빌드할 때 사용
✏️ sam local start-api
API Gateway의 로컬 에뮬레이터를 실행
✏️ sam local invoke
ambda 함수를 로컬에서 직접 실행하고 테스트
간단하게 SAM CLI를 이용하여 작업하기
먼저 도커와 SAM CLI가 최신으로 깔려있는지 확인한후,
sam init
을 cmd에 입력하여 새로운 sam 프로젝트를 초기화한다.
그이후
AWS Quick Template Location
N
<<본인이 사용하고 싶은 언어>>
package type -> Zip
1
질문에 답 없이 엔터를 누른후
project Name 적음
완성! 물론 읽어보고 자기가 원하는대로 해도 된다, 나는.. 아직 잘 몰라 기초적으로 따라하는 것일뿐..ㅎ..
이렇게 해서 만들었으면 파일이 제대로 생성되었나 확인후 cmd에 가서
cd 'project Name'
sam build
한후 cmd로 돌아가 sam구축하면 해당 폴더안에 .aws-sam폴더가 생성된다.
이제 도커가 설치되어 있으면
sam local start-api
입력하면 로컬 환경에 접근 가능하다. 해당 사이트로 들어가 확인하면

위의 사진과 같이 확인 가능!!
그 이후,
sam local invoke "HelloWorldFunction" -e events/event.json
으로 함수를 확인해 본다.
✏️새함수를 만들고 싶다면?
프로젝트 폴더(해당폴더 들어가자 마자)에 새로운 폴더를 추가 및 파일을 생성한다.
app.py 파일을 생성하고 다음과 같이 작성

그 후,
프로젝트 폴더(해당폴더 들어가자 마자)에 template.yaml파일에 들어가 람다 함수 정의(추가)
# template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
NewLambdaFunction:
Type: 'AWS::Serverless::Function'
Properties:
Handler: app.lambda_handler
Runtime: nodejs18.x
CodeUri: new-lambda
Events:
HelloWorldApi:
Type: Api
Properties:
Path: /new-lambda
Method: get
그후 sam build를 다시 한다음 sam local start-api 입력해서 함수를 확인하면 완성!