다루는 내용
- Lambda 이해
- S3 버킷 생성
- IAM Role 생성
- Lambda function 패키지 생성
- Lambda 수동 실행
- Lambda 자동 실행
실습
Lambda 이해
Lambda는 이벤트에 응답하여 개발자 코드를 실행하고, 자동으로 컴퓨팅 리소스를 관리하여 새로운 정보에 신속하게 대응하는 애플리케이션을 쉽게 개발할 수 있도록 지원하는 컴퓨팅 서비스이다. S3와 Custom APP의 경우 Push 방식으로 동작하며, Kinesis와 DynamoDB의 경우 Pull 방식으로 동작한다.
- S3에서 Lambda로 이벤트 Push
- Lambda가 Kinesis의 메시지 Pull이번 실습에서는 S3 버킷에 이미지 파일이 업로드 될 경우 Lambda가 이벤트를 받아서 리사이징하고, 결과를 다른 S3 버킷에 저장하도록 한다. 실습에 필요한 준비 사항은 다음과 같다.· 이미지가 업로드 될 S3 버킷· 이미지가 리사이징되어 저장 될 S3 버킷· Lambda 서비스가 실행되는데 필요한 권한(IAM Role)· 이미지를 리사이징하는 개발자 코드
S3 버킷 생성
- 두 개의 S3 버킷을 생성하고, Policy를 수정한다.1) arang (이미지 업로드 버킷)2) arang-lab (리사이징된 이미지 저장 버킷)
IAM Role 생성
- 콘솔에서 IAM 클릭
- 왼쪽 메뉴에서 Roles 클릭
- Create New Role 클릭
- Set Role Name 페이지에서1) Role Name : lambda-lab2) Next Step 클릭
- Select Role Type 페이지에서1) AWS Lambda à Select 클릭
- Attach Policy 페이지에서1) AWSLambdaExecute 선택2) Next Step 클릭
- Review 페이지에서1) Create Role 클릭
Lambda function 패키지 생성
현재 Lambda는 Node.js와 Java 8을 지원한다.
Node.js 코드
- Node.js 플랫폼 설치1) EC2 인스턴스 접속2) https://nodejs.org/ 에서 리눅스용 소스 다운로드
(https://nodejs.org/dist/v0.12.5/node-v0.12.5-linux-x64.tar.gz)3) 압축을 풀면 bin 디렉토리에 node 파일과 npm 파일이 있다. - CreateThumbnail.js 작성1) AWS 매뉴얼 페이지 참고 (소스를 복사해서 사용하면 된다.)http://docs.aws.amazon.com/lambda/latest/dg/walkthrough-s3-events-adminuser-create-test-function-create-function.html2) 리사이징된 이미지가 저장 될 버킷명으로 수정한다.
var dstBucket = srcBucket + “-lab” - 라이브러리 설치1) node.js package manager를 실행하여 async와 gm을 설치한다.
$ npm install async gm - zip파일로 압축1) CreateThumbnail.js 파일과 node_modules 라이브러리 디렉토리를 zip으로 압축하여 패키지 파일을 만든다.
$ zip -r CreateThumbnail.zip CreateThumbnail.js node_modules/ - 패키지 파일 업로드1) Lambda에서 사용하기 위해 S3에 업로드 해둔다.
$ aws s3 cp ./CreateThumbnail.zip s3://arang
Lambda 수동 실행
Lambda Function 생성
- 콘솔에서 Lambda 클릭
- Get Started Now 클릭
- Lambda: New function 페이지에서1) Name : lambda-image-resizing2) Code entry type : Upload a .ZIP from S3 선택3) S3 link URL : https://s3-us-west-2.amazonaws.com/arang/ExampleCode/CreateThumbnail.zip 입력4) Handler : CreateThumbnail.handler 입력5) Role : lambda-lab 선택6) Create Lambda function 클릭
- Actions → Edit/Test 클릭
- Lambda: Edit/Test lambda-image-resizing 페이지에서1) Sample event : S3 Put 선택2) 샘플 수정
· awsRegion : 테스트 리전으로 수정
· name : 업로드 버킷명으로 수정
· arn : 업로드 버킷의 arn으로 수정
· key : 리사이징이 적용될 파일 명 (arang 버킷내에 있는 이미지 파일 명) - Invoke 클릭
이미지 업로드 버킷(arang)에 images.jpg 파일을 리사이징하여 저장 버킷(arang-lab)에 저장한다.
먼저 arang 버킷에 images.jpg 파일을 업로드 후 실행하자. - 확인
저장 버킷에 resized-images.jpg 라는 파일이 생성된다.
Lambda 자동 실행
- 콘솔에서 Lambda 클릭
- Actions → Add event source 클릭
- Lambda: Publish event notifications to lambda-image-resizing 페이지에서1) Event source type : S3 선택2) Bucket : arang 선택3) Event type : Put 선택4) Submit 클릭Lambda 트리거가 실행중이다. jpg나 png 파일이 업로드 되면 자동으로 리사이징되어 저장된다.
참고
※ http://docs.aws.amazon.com/lambda/latest/dg/walkthrough-s3-events-adminuser.html
Lambda Function의 샘플 Java 코드
Maven Plugin 설치
- Eclipse 실행
- 메뉴에서 Help à Install New Software 클릭1) Work with : http://download.eclipse.org/technology/m2e/releases 입력2) Add 클릭3) Maven Integration for Eclipse 선택4) Next 클릭5) Next 클릭6) I accept the terms of the license agreement 선택7) Finish 클릭
Maven Project 생성
- 메뉴에서 File à New à Project 클릭
- New Project 창에서1) Maven Project 선택2) Next 클릭
- New Maven Project 창에서1) Create a simple project 선택2) Next 클릭3) Group Id : doc-examples 입력4) Artifact Id : lambda-java-example 입력5) Name : lambda-java-example 입력6) Finish 클릭
Lambda 라이브러리 추가
- pom.xml에서 마우스 우클릭 → Maven → Add Dependency 클릭
- Add Dependency 창에서1) Group Id : com.amazonaws 입력2) Artifact Id : aws-lambda-java-core 입력3) Version : 1.0.0 입력4) OK 클릭
- pom.xml에서 마우스 우클릭 → Maven → Add Dependency 클릭
- Add Dependency 창에서1) Group Id : com.amazonaws 입력2) Artifact Id : aws-lambda-java-events 입력3) Version : 1.0.0 입력OK 클릭
- 프로젝트 하위 디렉토리 src/main/java에서 마우스 우클릭 → New → Class 클릭
- New Java Class 창에서1) Name : S3EventProcessorCreateThumbnail 입력2) Finish 클릭
자바 코드 작성
- S3EventProcessorCreateThumbnail.java 코드 작성1) http://docs.aws.amazon.com/lambda/latest/dg/java-wt-s3-log-event-data.html
소스를 복사해서 붙여 넣는다.2) 리사이징된 이미지가 저장 될 버킷명으로 수정한다.
String dstBucket = srcBucket + “-lab”3) 패키지 불일치 에러가 발생하면 수정한다.
maven-shade-plugin Maven Plugin 추가
소스를 패키징할 때 라이브러리를 포함하여 standalone .jar 파일을 만들어 준다.
- pom.xml 파일 우클릭 → Maven → Add Plugin 클릭1) Group Id : org.apache.maven.plugins 입력2) Artifact Id : maven-shade-plugin 입력3) Version : 2.3 입력4) OK 클릭
- 프로젝트(lambda-java-example)에서 마우스 우클릭 → Run As → Maven Build 클릭
- Edit Configuration 창에서1) Goals : package shade:shade 입력2) Run 클릭
- 파일 확인프로젝트의 target 디렉토리에 lambda-java-example-0.0.1-SNAPSHOT.jar 파일이 생성된다.
- Lambda에서 실행확인실행 시 handler는 example.S3EventProcessorCreateThumbnail 이다.
'Cloud AWS' 카테고리의 다른 글
Amazon AWS :: EC2 Container Service 이해 (0) | 2015.11.24 |
---|---|
Amazon AWS :: ELASTIC LOAD BALANCING과 CLOUDFRONT에 SSL 적용 (0) | 2015.11.24 |
Amazon AWS :: Cloudfront 정복 (0) | 2015.11.24 |
GS네오텍 AWS "Learm and Be Curious" 부문 대표회사 선정 [ 2015 re:Invent ] (0) | 2015.11.24 |
Amazon AWS :: DynamoDB 소개 (0) | 2015.11.21 |