본문 바로가기
취준일기 + Working

[AWS] Lambda 웹서버 만들어보기 | 동빈나 따라하기

by 햄찌네굴렁쇠 2021. 6. 27.

요즘은 코딩도 AWS가 대세라기에 느리지만 조금씩 공부하고자 합니다.
오늘은 남치니의 소개로 알게 된 동빈나 유튜브 영상을 따라 AWS Lambda를 공부했습니다.
https://www.youtube.com/watch?v=7uEDep9DFJs

AWS Labmda는 AWS Practitioner와 ASA 시험을 준비하면서도 했었지만 제대로 콘솔에서 누른 것은 처음이네요+ㅁ+
하나씩 따라해보겠습니다.
AWS Lambda 가 무엇인지 헷갈린다면 Python에서 쓰는 Lambda 함수를 떠올리시면 좋을 것 같아요 따로 def 하지 않고 바로 함수를 써먹을 수 있다는 것! 예를 들면
def plus (x,y) :
return x+y
plus(4,5)

를 lambda function 하면

(lambda x,y: x+y) (4,5)
와 같이 된다는 것이져! 이렇게 따로 함수를 정의하거나, 인자를 관리할 필요 없이 바로 쓸 수 있다는 것과 같은 것.

AWS 콘솔에서 AWS Lambda에 들어가줍니다 (Region은 Seoul로 설정하였습니다)

처음 들어온 곳이라 그런가 아무것도 없답니다
우측 상단의 Create Function을 눌러줍니다

람다를 시작하기 위한 4개의 옵션이 생겼네요. 동빈님 영상에서는 Container Image가 없는 듯합니다. 컨테이너는 없으나 언젠가 컨테이너를 쓰게 된다면 그때 한번 도전해보겠습니다. 이번에는 디폴트대로 Author from scratch 로 시작.
>동빈나 영상 그대로 따라했습니다!
Basic Information
- Function Name : Hello_Lambda_Python
Runtime : Lambda함수가 어떤 환경에서 돌아갈지 설정 (제가 아는 유일한 언어 Python 3버전 클릭!)
- Python 3.8
그 아래에는 더보기▼ 눌러야 나오는 항목에
Execution role - (by default) Create a new role with basic Lambda permissions 로 설정
("기본 람다 권한을 가지고 있는 새로운 역할을 생성하겠습니다"라는 의미)

위와 같은 내용을 입력하고

우측 하단의 Create Function 을 클릭합니다 클릭 후 몇분 안에 Lambda 함수가 생성됩니다.
생성된 경우

이런 메세지와 함께 해당 Lambda 함수 페이지로 자동 로드 됩니다. 조금만 기다리시면 됩니다.
+ 람다의 경우에는 거의 공짜이긴 한데 사용량이 많아지면 그에 상응하게 과금이 터질 수 있다고 합니다. (Free Tier 12개월을 사용중이어도 과금될 수 있다고 합니다)

왼쪽+Add trigger에는 Lambda가 돌아가기 위한 triggering event를 넣는 자리이고 (유인요소)
오른쪽+ Add destination에는 Lambda가 작동하고 난 후에 Lambda가 처리한 내역을 처리하기 위한 event를 넣는 자리 (결과요소)

+Add trigger
에는 API Gateway를 넣어 Lambda로의 외부 접근을 허용했습니다.
API Gateway는 일종의 웹서버처럼 동작한다고 하네요.
API - Create a new API 로 설정
API Type - HTTP API 로 설정
Security - Open (누구나 우리의 웹서버 주소를 알고 있다면 인증키 없이 접속할 수 있도록 설정)
▶Additional Settings에는 손 대지 않았습니다
API endpoint - 방금 만든 Lambda 함수의 서버 주소 (이 링크를 클릭하면 바로 웹사이트 화면으로 전달됩니다!)

+ Add destination 에 저는 Amazon CloudWatch Logs를 넣어서 로그 저장을 위한 destination을 설정했습니다.
Source: Asynchronous invocation (주로 처리 속도의 향상을 위해 비동기식으로 설정한다고 들은 것 같습니다)
Condition: On Success (람다 처리가 잘 되었을 때를 남기고자)

아래쪽에 handler 함수가 작성되어 있고, 본 handler 함수가 메인이라고 선언한다는 의미라고 이해하시면 됩니다.
event를 언제 발생시킬 수 있을지는 +add trigger와 연동되어 해당 내용이 event 파라미터에 들어옵니다.
위에 코드에서는
1) 정상적으로 처리된 경우 상태코드는 200으로 반환
2) 처리 결과를 body에 적음 - Hello from Lambda 메세지를 반환하도록 만들어진 것
3) 꼭 Save 하셔야만 Lambda 함수가 작성하신 대로 동작한다고 하는데 제 콘솔에서는 없어졌나 봅니다.

위의 handler 함수의 body를 변경하기 시작하면 웹사이트에 나오는 내용을 변경할 수 있다고 합니다
ex. 'body' : json.dumps("Hello from Lambda!") -> 'body' : json.dumps("Lambda!")

댓글