음성으로 일기를 기록하고, 이 일기의 감정을 분석하는
서비스를 만들게 되었습니다. 해당 프로젝트에서 'Lambda에서 aws Comprehend를 이용하여 감정을 출하는 부분'을 담당하게 되었습니다. (아래 그림의 초록색 부분) 하지만 람다를 한번도 사용해본 적이 없어서 이번 기회에 람다를 제대로 공부해보려 합니다.
AWS Lambda는 이벤트에 대한 응답으로 코드를 실행하고 자동으로 기본 컴퓨팅 리소스를 관리하는 서버리스 컴퓨팅 서비스입니다. (출처 : 공식 문서)
지난번 IAM 글에서도 공식 문서의 첫 문장으로 IAM의 본질에 대해 유추해봤는데요, 마찬가지로 첫번째 문장으로 lambda의 본질을 생각해본다면 이벤트에 의해 트리거되는 서버리스 컴퓨팅 서비스
라고 볼 수 있을 것 같습니다.
Serverless is a cloud computing application development and execution model that enables developers to build and run application code without provisioning or managing servers or backend infrastructure. (출처 : IBM Topic - Serverless )
서버리스 컴퓨팅 서비스는 컴퓨팅 리소스를 자동으로 관리해주는 서비스를 말합니다. 예를 들어서, 로컬에서 코드를 실행한다면 이는 제 컴퓨터의 CPU에서 동작하겠지요. EC2에서는 EC2의 운영체제 위에서 동작할 것입니다. 반면 서버리스 컴퓨팅 서비스는 코드가 어디에서 동작하는지, 메모리는 얼마나 필요한지에 대해 신경쓸 필요 없이 코드만 제공하면 이를 실행해주는 서비스를 말합니다.
이벤트에 의해 트리거 된다는 것은 어떠한 동작에 의해 코드가 자동 실행된다
는 것을 의미합니다. 람다를 트리거할 수 있는 대표적인 이벤트는 아래와 같습니다. (전체 이벤트는 링크 참고)
공식 문서에서 제시하는 사용 순서는 아래와 같습니다.
1. 코드 업로드 or Lambda 콘솔에서 직접 개발
2. 메모리, 제한 시간, IAM 역할을 선택하여 함수를 생성
3. 함수를 트리거할 리소스를 지정 (e.g. S3 버킷, DynamoDB 테이블, Amazon Kinesis 스트림)
튜토리얼을 진행해보겠습니다.
① 람다 콘솔로 들어가서 함수 생성을 눌러줍니다.
② 블루프린트를 아래와 같이 설정해줍니다.
블루프린트에서는 Lambda를 다른 어플리케이션과 함께 사용할 수 있는 샘플 코드를 제공합니다. 튜토리얼이므로 블루프린트에서 제공하는 샘플 코드를 사용해봅시다. 블루 프린트를 설정하면 스크롤을 아래로 내려서 [Lamdba 함수 코드] 부분이 자동으로 채워졌음을 확인할 수 있습니다.
③ 역할을 설정해줍니다.
튜토리얼에서는 새 역할을 생성해보겠습니다.
④ 함수 생성을 눌러줍니다.
⑤ 생성한 함수를 검토해봅시다.
함수 개요 > 코드 > 런타임 설정에서 아래와 같은 내용을 볼 수 있습니다. 여기서 런타임이란 람다 함수가 작성된 언어를 의미하고, 핸들러란 이벤트가 발생했을 때 이를 인자로 받을 함수의 이름을 의미합니다. 이번 실습에서는 lambda_handler
라는 이름의 함수를 만들어줬으므로 아래와 같이 나타납니다.
⑥ 생성한 함수를 테스트해봅시다.
함수 개요 > 테스트 에서 테스트 이벤트를 만들 수 있습니다. 자바에서 테스트 코드를 짤 때에는 어떤 함수가 어떤 인자를 가지고 호출이 될 때 그 결과가 예상한 것과 일치하는지를 테스트 했습니다. 람다에서도 동일하게 테스트를 만들 수 있습니다. 단지 차이점은 람다에서의 함수의 인자는 이벤트 JSON
이라는 것입니다. 아래와 같이 테스트 이벤트를 구성해봅시다.
테스트를 누르면 성공한 것을 확인할 수 있습니다!
세부 정보로 로그에 대해서도 확인할 수 있습니다. (로그에 대해서 모르시는 분이 있으실까 첨언하자면, 람다 함수에서 print()
에 의해 출력된 부분이 로그로 기록됩니다.)
다시 한번 정리하자면, 람다는 이벤트에 의해 트리거되는 함수 형식의 서버리스 컴퓨팅 서비스
입니다. 튜토리얼에서는 트리거를 설정하지 않았는데요, 직접 람다 함수를 만들어보며 트리거를 설정하는 방법도 작성해보겠습니다.