AWS - Lambda 활용
요약글을 적으세요
다루는 내용
- 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 버킷 생성
1. 두 개의 S3 버킷을 생성하고, Policy를 수정한다.
// ① arang (이미지 업로드 버킷) //
{
"Version": "2012-10-17",
"Id": "Policy1429754971377",
"Statement": [
{
"Sid": "Stmt1429754969363",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::arang/*"
}
]
}
//② arang-lab (리사이징된 이미지 저장 버킷)
{
"Version": "2012-10-17",
"Id": "Policy1433991353791",
"Statement": [
{
"Sid": "Stmt1433991343817",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::arang-lab/*"
}
]
}
IAM 생성
1. 콘솔에서 IAM 클릭
2. 왼쪽 메뉴에서 Roles 클릭
3. Create New Role 클릭
4. Set Role Name 페이지에서
① Role Name : lambda-lab
② Next Step 클릭
5. Select Role Type 페이지에서
① AWS Lambda à Select 클릭
6. Attach Policy 페이지에서
① AWSLambdaExecute 선택
② Next Step 클릭
7. Review 페이지에서
① Create Role 클릭
Lambda funcion 패키지 생성
현재 Lambda는 Node.js와 Java 8을 지원한다.
Node.js 코드
CreateThumbnail.js ← node.js로 작성된 이미지 리사이징 코드 /node_modules/gm ← GraphicsMagick 라이브러리 /node_modules/async ← Async utility module 라이브러리
1. Node.js 플랫폼 설치
① EC2 인스턴스 접속
② https://nodejs.org/ 에서 리눅스용 소스 다운로드
(https://nodejs.org/dist/v0.12.5/node-v0.12.5-linux-x64.tar.gz)
③ 압축을 풀면 bin 디렉토리에 node 파일과 npm 파일이 있다.
2. CreateThumbnail.js 작성
① AWS 매뉴얼 페이지 참고 (소스를 복사해서 사용하면 된다.)
① 리사이징된 이미지가 저장 될 버킷명으로 수정한다.
var dstBucket = srcBucket + “-lab”
1. 라이브러리 설치
① node.js package manager를 실행하여 async와 gm을 설치한다.
$ npm install async gm
.... 나머지는 아래 링크 참조
www.SalesMore.co.kr