해당 글은 런타임으로 nodejs를 사용하며 Lambda의 추가 코드 작성과 같은 예제는 없습니다.
Lambda의 용도는 다 알고 있으리라 생각한다. 직접 만들어 보며 어떤 것들을 제공하는지 어떻게 쓰면 좋을지에 대해서 살펴보자.
01. 새 함수 생성
간단하게 새 함수를 생성하자.
런타임이란 실행할 환경 즉 사용하실 언어를 선택하시면 된다. 예제에서는 런타임으로 Node.js 12.x를 선택했지만 다른 런타임을 선택하더라도 큰 무리 없다.
고급 설정에는 ARN과 VPN을 설정할 수 있다. 필요하시면 사용하시면 된다.
02. 디자이너
01. Layers
람다 함수의 코드 베이스 레이어를 등록한다. 일반적으로 외부 라이브라리를 사용해야 할 때, 주로 사용된다.
01. Layers를 등록하기 위해선 추가해야 하는데, Lambda 대시보드 바깥으로 나간 후 좌측 계층 메뉴에서 계층 생성을 누른다.
02. 계층을 구성한다. 이 때, 업로드를 .zip 형식으로 하는데 이는 아래의 해당 구조를 따라야 한다.
xray-sdk.zip
└ nodejs/node_modules/aws-xray-sdk
< xray-sdk를 예시로 nodejs라는 폴더에 node_modules을 담아 zip파일로 생성한다. >
02. 트리거 추가
lambda의 트리거를 등록한다. 많은 AWS API를 사용할 수 있는데 가장 많이 사용되는 것은 API Gateway이다.
API Gateway를 트리거로 등록하면 http 혹은 rest api로 람다를 실행할 수 있다.
03. 대상 추가
람다 함수가 실행을 마친 후 성공 실패 여부에 따라, 실행하는 어플리케이션을 등록한다.
대표적으로 SNS등을 사용한다.
03. 함수 코드
동기적인 코드는 위의 예제와 같이 response를 리턴하는 것으로 응답 처리가 완료 된다.
event 객체는 API Gateway등에서 넘겨받은 Request객체를 가지고 있다.
자세한 내용은 다음 포스팅의 02.API테스트를 참고할 수 있다.
하지만 일반적인 경우는 비동기적으로 동작하는 코드를 작성하게 되는데 이 때는 다음과 같이 context와 callback를 추가로 사용해야 한다.
Context
nodejs context 인터페이스 문서는 docs.aws.amazon.com/ko_kr/lambda/latest/dg/nodejs-context.html 에서 확인 가능하다.
다른 런타임 언어도 왼쪽 메뉴에서 확인 가능하다.
이 때 calllbackWaitsForEmptyEventLoop = false 는 callback함수가 실행될때 EventLoop의 상태여부와 상관없이 응답을 완료하게 해주는데 비동기가 있는 함수에서 꼭 필요한 설정이다.
혹은 callback을 쓰지 않고도 응답을 완료 할 수 있는 방법이 있는데
context.succeed(response object)
context.fail(error object)
context.done(response object)
함수를 이용하는 방식이다. 다만 오래된 방법이라 권유 하지 않는다고 한다.
만약 두 방법이 아니라면, lambda가 응답을 완료하지 못하고 timeout을 발생시킨다.
Callback
최신 response 방법이다. 첫번째 인자로 error 두번째로 response object를 넣어준다.
첫번째 인자가 null이면 성공이라는 의미이다.
'Develop' 카테고리의 다른 글
Docker 컨테이너 생성, 실행 및 삭제 (0) | 2021.01.31 |
---|---|
AWS VPC 및 간단한 IPv4 (0) | 2021.01.30 |
API Gateway를 사용하여 API 구축하기 (3) REST API 생성 (0) | 2021.01.26 |
API Gateway를 사용하여 API 구축하기 (2) HTTP API 생성 (0) | 2021.01.25 |
리팩토링 기법 - 함수 추출하기 (0) | 2021.01.24 |