lamda와 cloudwatch를 이용한 개발계 시스템 주중에만 작동 하도록 하기

목표: 개발계 시스템 주중 업무시간에만 작동하도록 자동화 한다.

아래 대로 진행하면 해당 인스턴스 시작, 정지를 자동화 할 수 있다.
1. lambda 설정
2. cloudwatch rule 설정
3. trigger 등록

1. lambda 설정
*stop server code(node.js)
var AWS = require('aws-sdk');
exports.handler = function(event, context) {
 var ec2 = new AWS.EC2({region: 'EC2 region'});
 ec2.stopInstances({InstanceIds : ['EC2 instance ID'] },function (err, data) {
 if (err) console.log(err, err.stack); // an error occurred
 else console.log(data); // successful response
 context.done(err,data);
 });
};


*start server code(node.js)
var AWS = require('aws-sdk');
exports.handler = function(event, context) {
 var ec2 = new AWS.EC2({region: 'EC2 region'});
 ec2.startInstances({InstanceIds : ['EC2 instance ID'] },function (err, data) {
 if (err) console.log(err, err.stack); // an error occurred
 else console.log(data); // successful response
 context.done(err,data);
 });
};


*role policy
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Start*",
        "ec2:Stop*"
      ],
      "Resource": "*"
    }
  ]
}
2. cloudwatch rule 설정
cloudwatch Rule 등록(Start, Stop 등록)
시작(월~금 01:00:00 GMT에 수행)
Schedule
Cron expression 
0 1 ? * MON-FRI *
정지(월~금 09:00:00 GMT에 수행)

Cron expression 
0 9 ? * MON-FRI *


3. lamdba 서비스에서 add trigger에서 cloudwatch event 선택 후 시작, 정지를 선택후 적용

댓글

이 블로그의 인기 게시물

AWS를 이용한 Serverless 환경 구축 2 - Lambda로 DynamoDB 쓰고 읽기

Gitlab CI 설정

AWS Ceritificate Manger 이용방법