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. 기타 활용범위
- 이미지 리사이징, 섬네일 생성
- 비디오 인코딩
