Search
🔵

ba2.3.a0.5.2. title: AWS SAM(Serverless Application Model)은 코드형 인프라(‣) 도구 클라우드포메이션(AWS Cloud Formation)에 애플리케이션을 뭉친 덩어리다. 즉, 서버리스 애플리케이션을 찍어내는 뼈대다.

생성
🚀 prev note
♻️ prev note
ba2.3.a0.5.1. title: AWS CloudFormation은 코드형 인프라(‣) 도구이다.
a1.2.a9.1.1.2. title: AWS 람다(Lambda)를 이용해 간단한 함수를 배포한다. 꼭 이 함수가 HTTP API를 위해 존재할 필요는 없다. 이 함수는 서비스가 될수도 있고, 클라우드의 자원을 제어하는 스크립트일수도 있고, 다른 AWS 서비스의 기능으로 동작할수도 있고, 한낱 매크로일 수도 있다.
bb7.4. [entry] title: 객체 모델(‣): 어떤 개념을 어떤 객체로 찍어낼지 정의하는 뼈대
🚀 next note
14 more properties
AWS SAM(Serverless Application Model)은 코드형 인프라(from1) 도구 클라우드포메이션(AWS Cloud Formation)(from2)에 애플리케이션을 뭉친 덩어리이다. 즉, 서버리스 애플리케이션을 찍어내는 뼈대다(from4). 클라우드포메이션을 사용하면 template.yaml 파일을 이용해 인프라를 구성하게 되는데 SAM 템플릿에도 이 파일이 포함되어 있다. 그 예시는 아래와 같다.
Resources: HelloWorldFunction: Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.9 Architectures: - arm64
YAML
복사
template.yaml
파일을 보면 애플리케이션의 일부가 AWS::Serverless::Function 즉 AWS Lambda(from3)로 구성되어 있음을 알 수 있다. aws sam buildaws sam deploy --guided 명령으로 배포된 애플리케이션에 요청을 보내기 위해서는 URL을 알아야 하는데, 튜토리얼을 따라하는 경우 URL은 다음과 같은 규칙으로 구성된다.
https://<restapiid>.execute-api.us-east-1.amazonaws.com/<기타등등>
Plain Text
복사
이때 필요한 <restapiid>는 AWS API Gateway 홈에서 확인할 수 있다.
내 로컬 환경이 arm64이기 때문에, 로컬 환경과 배포 환경을 동일하게 만들기 위해 template.yaml 파일의 Architecturesarm64로 설정했다(참고1:AWS Lambda는 arm64를 지원한다)는 점에 주의하자. 도커 기반의 SAM을 이용하는 경우도 마찬가지다. arm64아키텍처에서 빌드된 도커 이미지는 보통 도커 이미지의 태그에 arm64가 명시되어 있다. 예를 들어 내가 사용하는 도커 이미지의 이름과 태그는 public.ecr.aws/lambda/python:3.8-arm64 이다. 이미지의 목록은 ECR 갤러리(참고2)에서 찾을 수 있다.
다만 이 때, 모든 리전에서 arm64 컴퓨팅 자원을 지원하지 않으므로 SAM을 사용하는 계정의 configure 설정이 필요하다. aws configure 명령어를 사용하며 us-east-1 등 arm64 컴퓨팅을 지원하는 리전인지 확인해 보자.
~/dev/PracticalMLOps/aws-sam/sam-app » aws configure janghoo@Janghoo-MacBookPro AWS Access Key ID [****************WRFA]: AWS Secret Access Key [****************3RL2]: Default region name [us-east-1]: Default output format [None]:
Bash
복사
parse me : 언젠가 이 글에 쓰이면 좋을 것 같은 재료들.
1.
None
from : 과거의 어떤 생각이 이 생각을 만들었는가?
1.
4.
객체 모델이 어떤 개념을 어떤 객체로 찍어낼지 정의하는 뼈대라면, 애플리케이션 모델은 애플리케이션으로 찍어내는 뼈대, 서버리스 애플리케이션 모델은 서버리스 애플리케이션을 찍어내는 뼈대다.
supplementary : 어떤 새로운 생각이 이 문서에 작성된 생각을 뒷받침하는가?
opposite : 어떤 새로운 생각이 이 문서에 작성된 생각과 대조되는가?
1.
None
to : 이 문서에 작성된 생각이 어떤 생각으로 발전되고 이어지는가?
1.
None
참고 : 레퍼런스