aws lambda node.js で ec2 起動/停止処理

aws
const INSTANCE_ID = 'i-0819feaff6df92e74';

var AWS = require('aws-sdk');
AWS.config.region = 'ap-northeast-1';

function ec2Start(cb){
  var ec2 = new AWS.EC2();
  var params = {
    InstanceIds: [
    INSTANCE_ID
    ]
  };

  ec2.startInstances(params, function(err, data) {
    if (!!err) {
      console.log(err, err.stack);
    } else {
      console.log(data);
      cb();
    }
  });
}

exports.handler = function(event, context) {
  console.log('start');

  ec2Start(function() {
    context.done(null, 'Started Instance');
  });
};

実行ロールのポリシードキュメントは以下のように設定します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "ec2:StartInstances"
      ],
      "Resource":[
      "arn:aws:logs:*:*:*",
      "arn:aws:ec2:*"
      ]
    }
  ]
}

停止の場合は

stopInstancesを使いましょう
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#stopInstances-property

タイトルとURLをコピーしました