1. 개요
Lambda가 무엇인지 모른다면 먼저 Lambda에 대해 알아보고 넘어가자. 좀 안다고 하더라도 Lambda를 이용하여 Hello World 정도는 찍을 수 있어야 한다.
2. 시작
lambda Function을 생성한다.
- blueprint는 Blank Function 선택!
- 트리거는 넘어간다.
- 이름 입력하고 언어는 노드 선택!
- Role은 custom role을 하나 만들어준다. (새창이 뜬다)
3. role
다음은 custom 생성할 role 내용이다.
원래는 이런 내용이 있었을거다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }
이렇게 바꾼다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }
4. Lambda 함수
그리고 가장 중요한 Lambda 함수 내용이다.
const AWS = require('aws-sdk'); const ec2 = new AWS.EC2(); function getInstnaces(nextToken, callback) { const params = { NextToken: nextToken, }; ec2.describeInstances(params, (err, data) => { if (err) { callback(err); return; } const instances = []; data.Reservations.forEach(reservation => reservation.Instances.forEach(instance => instances.push(instance))); if (data.NextToken) { getInstnaces(data.NextToken, (err, nextInstances) => { callback(err, [...instances, ...nextInstances]); }) } else { callback(err, instances); } }); } exports.handler = (event, context, callback) => { getInstnaces(null, (err, instances) => { callback(err, instances); }) };
그리고 [Test] (테스트)를 하면.. json으로 EC2 Instance 결과가 나온다!
5. 기타 활용범위
- 이미지 리사이징, 섬네일 생성
- 비디오 인코딩