고양이발일기
AWS SAM을 이용한 Hello World 애플리케이션 배포하기 본문
배고파
육사시미
육사시미가 먹고싶다 ..
고소한 참기름장에 두껍게 썰린 육사시미 하나 집어서 촉촉하게 찍은 다음에 한입에 넣고 우물우물 질겅질겅하면서 최대한 고소함을 느끼고 싶다 엉엉 식감이 너무 그립다 아 배고파 ...
회사 사람들은 지금 내가 열심히 일하고 있는 줄 알겠지 ..
암튼 오늘은 간단한 애플리케이션 다운로드, 빌드, 배포를 해보자
자 가보자 가보자
AWS SAM 기본 설정은 ===> 2021.07.22 - [개발 일기] - [2021.07.21-22] AWS 서버리스 애플리케이션 모델 (AWS SAM)
자습서: Hello World 애플리케이션 배포
Tutorial: Deploying a Hello World application - AWS Serverless Application Model
Tutorial: Deploying a Hello World application In this guide, you download, build, and deploy a sample Hello World application using AWS SAM. You then test the application in the AWS Cloud, and optionally test it locally on your development host. This appli
docs.aws.amazon.com
최종 목표 : Amazon API Gateway 엔드포인트와 AWS Lambda 함수로 구성되며 API Gateway 엔드포인트에 GET 요청을 보내면 Lambda 함수가 호출됩니다. 이 함수가 hello world메시지를 반환하게 하는 것이 목표 ლ( ╹ ◡ ╹ ლ)

전제 조건
- AWS 계정 생성.
- AWS Identity and Access Management(IAM) 권한 구성.
- 도커 설치. 참고: Docker는 애플리케이션을 로컬에서 테스트하기 위한 전제 조건입니다.
- 홈브류 설치. 참고: Homebrew는 Linux 및 macOS 전용 필수 구성 요소입니다.
- AWS SAM 명령줄 인터페이스(CLI) 설치. 참고: 버전이 1.13.0 이상인지 확인하십시오. sam --version명령 을 실행하여 버전을 확인하십시오 .
- Image패키지 유형 을 선택하는 경우 배포를 수행할 Amazon Elastic Container Registry(Amazon ECR) 리포지토리 URI가 있습니다.
라고한다.
지금 내 상태는 ...
- AWS 계정 생성. ⭕️
- AWS Identity and Access Management(IAM) 권한 구성. ⭕️
- 도커 설치. 참고: Docker는 애플리케이션을 로컬에서 테스트하기 위한 전제 조건입니다. ⭕️
- 홈브류 설치. 참고: Homebrew는 Linux 및 macOS 전용 필수 구성 요소입니다. ⭕️
- AWS SAM 명령줄 인터페이스(CLI) 설치. 참고: 버전이 1.13.0 이상인지 확인하십시오. sam --version명령 을 실행하여 버전을 확인하십시오 . ⭕️
- Image패키지 유형 을 선택하는 경우 배포를 수행할 Amazon Elastic Container Registry(Amazon ECR) 리포지토리 URI가 있습니다. ❌
이므로 ... 어차피 최종 프로젝트는 ECR을 안쓰기도 하니 image 부분은 일단 빼놓고 진행을 해보자
나중에 안되면 여기로 다시 돌아오기 ㅋㅋ 막이래~
1단계: 샘플 AWS SAM 애플리케이션 다운로드
AWS SAM 애플리케이션을 생성하기 위해 아래의 명령어를 사용한다.
sam init

나머지 질문들은 각자 상황에 맞게 해주면 되는데
우선 나는 자습서에 나온대로 진행하였다.


폴더 구조이다.
sam-app/
├── README.md
├── events/
│ └── event.json
├── hello_world/
│ ├── __init__.py
│ ├── app.py # AWS Lambda 핸들러 로직을 포함합니다.
│ └── requirements.txt # sam 빌드에 사용되는 응용 프로그램에 필요한 모든 Python 종속성을 포함합니다.
├── template.yaml # 애플리케이션의 AWS 리소스를 정의하는 AWS SAM 템플릿을 포함합니다.
└── tests/
└── unit/
├── __init__.py
└── test_handler.py
세 가지 특히 중요한 파일이 있다.
- template.yaml: 애플리케이션의 AWS 리소스를 정의하는 AWS SAM 템플릿을 포함합니다.
- hello_world/app.py: 실제 Lambda 핸들러 로직을 포함합니다.
- hello_world/requirements.txt: 애플리케이션에 필요한 모든 Python 종속성을 포함하며 sam build.-> 우리가 알고있는 requirements.txt 파일인 것 같당
2단계: 애플리케이션 빌드
template.yaml 파일이 있는 곳에서 빌드 명령어를 실행해줍니다. 보통 sam-app 디렉토리 바로 하위에 존재합니당
sam build

3단계: AWS 클라우드에 애플리케이션 배포
sam deploy --guided
자습서에서 기본 옵션을 수락하려면 그냥 엔터만 눌러서 진행하라 했는데

뭔가 했드니 마지막 질문이 업데이트 되었을때 인증을 정의하지 않아도 괜찮은지 확인하는 것인데 아니요라고 하면 뜨는 에러다 크쿠...
느슨해진 터미널에 긴장감을 주네
아무튼 나머지는 기본설정으로 쭉 가고 저저 질문만 yes로 답을 해주자

AWS SAM이 하는 일:
이 명령은 애플리케이션을 AWS 클라우드에 배포합니다. sam build명령으로 빌드한 배포 아티팩트를 가져와 AWS SAM CLI가 생성하는 Amazon Simple Storage Service(Amazon S3) 버킷에 패키징 및 업로드하고 AWS CloudFormation을 사용하여 애플리케이션을 배포합니다. sam deploy명령 출력에서 AWS CloudFormation 스택에 대한 변경 사항을 볼 수 있습니다.
라고 한다.
아무튼 배포는 완료했는데 확인을 해보려면 http 엔드포인트를 생성해봐야한다. 음...
이것은 어떻게 해야하는 일일까
옷 ㅋ AWS Lambda console에 들어가보니 생성된 것을 확인해 볼 수 있었다.

람다 함수 > 구성 > 트리거 > API Gateway를 보면 API endpoint가 나온다.
해당 좌표를 클릭해보면

두둥탁 ㅋ 잘 배포된 모습

curl 명령어로 get 함수를 불러오는 작업을 해봤다
역시 ㅋ 잘나온다 ㅋ
키야 오늘좀 뿌듯하네

근데 생각해보니 웹페이지 배포에대한 부분을 진행해달라 했ㄴㄴ데 람다 배포 먼저 해벌였네?
암튼 그거슨 그묘일-주말에 해봐야겟스요/..
11시다 오늘 업무도 홧팅 땃쉬ㅋ~
'개발 일기' 카테고리의 다른 글
Github Actions로 CI/CD 설정하기 (0) | 2021.07.26 |
---|---|
AWS에 웹 프론트 배포하기 (2) | 2021.07.23 |
AWS 서버리스 애플리케이션 모델 (AWS SAM) (0) | 2021.07.22 |
Code Deploy 시작하기 (1) | 2021.07.20 |
AWS 람다와 AWS S3 연결하기 (f. API Gateway) (0) | 2021.07.19 |