본문 바로가기
etc../AWS

AWS Lambda

by 최로이 2020. 8. 15.

1. AWS Lambda

먼저 제목에 링크해둔 람다(Lambda)에 대한 3분짜리 AWS 영상을 한 번 보자. 람다는 함수(Lambda Function)를 통해 개발자가 일일이 코드를 입력하여 처리하지 않아도 미리 구현 해놓은 코드로 외부에서 오는 다양한 이벤트의 발생 시점에서 특정 처리를 할 수 있다.

 

람다에서 가장 중요한 개념은 '람다 함수'인데, 이 람다 함수는 Node.js(자바스크립토로 개발된 이벤트 기반 서버 구현)와 자바8, 11(Java8, 11) 언어로 구현하고 실행할 수 있다. 람다 함수는 실행 환경(구현 언어, 필요한 메모리 제한 기간이나 인증 자격)을 지정하는 컨텍스트(Context) 정보와 실제 코드를 업로드하는데, 콘솔에서 직접 편집하거나 클래스 파일 혹은 아마존 S3(Simple Storage Service)로부터 업로드 할 수있다.필요한 경우에는 타사 라이브러리도 업로드에 포함할 수 있다. 참고로 람다는 하나의 ZIP 파일의 형식으로 돼 있다.

 

업로드 이후 람다 함수 자신과 AWS 리소스(Resource: 특정 S3 버킷, 아마존 DynamoDB) 또테이블 또는 아마존 키네시스(Kinesis) 실시간 스트림을 연결한다. 람다는 람다 함수에 이벤트(일반적으로 자원이 변경된 경우 실행)를 함께 연결한다.

<그림1>

 

<그림2>

예컨대 위의 <그림2>처럼 모바일 앱에서 아마존 S3 스토리지에 신규 이미지를 올릴 경우, 관련 썸네일을 생성하려면 기존 서버에 설정된 어플리케이션이 있어야 한다. 그리고 이 역할을 람다 함수가 대신할 수 있다. 또한 아마존 DynamoDB에 새로운 데이터가 추가 됐을 때 다른 테이블을 수정하거나 사영자에게 알림을 보낼 수도 있다.

 

 

2. AWS Lambda 프로그래밍의 실행 환경

람다 함수는 연결된 AWS 서비스의 리소스가 변경될 때마다 활성화 된다. 즉 지정된 Node.js나 자바 클래스 함수가 실행되면 작업이 처리된다. 함수는 (POST와 함께 전달된 매개변수를 통해) JSON 형식의 데이터 구조에 접근할 수 있다. 이 데이터 구조는 람다 함수를 활성화 하는 계기가 되는 변경 또는 기타 이벤트에 대한 자세한 정보를 가지고 있다.

 

람다는 리소스 변경 속도에 뒤쳐지지 않도록 필요에 따라 람다 함수의 추가 복사본을 활성화 한다. 람다 함수는 컴퓨팅 인스턴스에 상태를 영구적으로 저장할 수 없다. 만약 저장을 원하면 S3나 DynamoDB를 사용해야 한다.

 

사용자가 작성한 코드는 Node.js 및 리눅스 환경, 자바8에서 내재된 기능을 사용할 수 있다. 다른 AWS 서비스를 호출하기 위해 AWS SDK for Javascript in Node.js를 사용할 수도 있다. 각 람다 함수에 지정된 콘텍스트 정보에는 함수의 최대 실행 시간이 지정돼 있다. 일반적으로 짧게 설정되어 있지만 필요에 따라 최대 60초까지 지정 가능하다.

 

람다는 AWS가 제공하는 사용자 권한을 지정하는 IAM역할(Role)을 사용해 람다 함수에 대한 접근과 AWS 리소스를 관리한다. 이러한 호출 역할(Inovacation role)은 Lambda에서 특정 람다 함수를 수행할 권한을 부여한다. 실행 역할(Execution Role)은 특정 AWS 리소스에 대한 접근 권한을 부여한다. 또한 람다 함수의 실행을 감시하고 요청 수, 지연시간, 가용성 및 오류 비율 통계를 아마존 클라우드워치(ColudWatch)에 저장한다. 이는 30일 동안 보관되며 콘솔에서도 볼 수 있다. 

 

3. 람다 사용시 고려사항

1) 람다 함수 컨텍스트 정보에는 실행에 필요한 메모리 양을 지정한다. 128MB에서 1??GB까지 원하는 값을 지정하면 된다. 메모리 설정에 따라 람다 함수를 사용 가능한 인스턴스의 CPU능력, 네트워크 대역폭, IO 대역폭이 결정된다.

 

2) 각 람다 함수의 시작은 최대 256개의 프로세스나 스레드를 사용할 수 있다. 최대 512MB의 로컬 스토리지와 102개 이상의 파일 디스크립터도 사용 가능하다. 또한 최대 10개의 동시 아웃바운드 연결을 생성할 수 있다.

 

3) 람다는 각 AWS 계정에서 관리상 제한할 수 있다. 미리보기 기간 동안에는 동시 실행 요청을 최대 25개까지 처리할 수 있다.

 

4. AWS Lambda 함수 만들기

1) AWS 관리 콘솔을 사용해 간단한 람다 함수를 만드는 과정을 살펴보자. 우선 콘솔에서는 8개 정도의 기본 예제를 이용할 수 있는데, 이 중 하나를 람다 함수로 만들고 실행해 보자. 먼저 [Name]에는 본인이 원하는 함수명을 지정한다. 그 후 [Runtime]에는 본인이 사용하려는 실행환경을 선택한다. 람다 함수는 콘솔에서 직접 작성하거나 패키지가 포함된 ZIP 파일 혹은 S3로부터 직접 업로드 할 수도 있다. 예컨대 새로운 이미지가 업로드 됐을 때 문자를 인식하는 라이브러리를 ZIP에 포함해 람다 함수를 작성한 후 인식된 결과를 DynamoDB에 넣을 수 있다.

람다(Lambda) 생성1

2) 람다 함수 실행 시 어떤 IAM 역할을 사용할지 여부를 지정하고 메모리 요구 사항 조장과 실행시간 권한 중 하나를 선택해 만들 수 있다. 

람다(Lambda) 생성2

3) [Next]를 눌러 간단한 람다 함수가 완성됐다. 이렇게 만든 람다 함수는 콘솔에서 반복 편집 테스트를 할 수 있다. <람다 생성3>처럼 람다 함수를 편집하고, 실제 데이터를 넣어 테스트 해볼 수 있다. 참고로 테스트 시에는 테스트 실행 시간 결과 로그 등을 확인할 수 있다. 아퍼 설명했듯 Lambda는 각 람다 함수마다 통계 정보를 수집하고 이를 아마존 칼라우드워치로 전송한다. 관련 통계는 콘솔에서 확인 가능하다.

람다(Lambda) 생성3

 

'etc.. > AWS' 카테고리의 다른 글

IAM의 개념과 IAM 사용자 & 그룹 생성  (0) 2020.08.07
S3, 버킷의 개념과 생성  (0) 2020.08.07
AWS EC2 인스턴스 생성하기  (0) 2020.08.07
AWS Architecture  (0) 2020.07.22
AWS EC2  (0) 2020.07.21

댓글