LambdaでのEC2起動停止にタグを利用する

  • 1
    いいね
  • 0
    コメント

Pyhoneを使って、LambdaでEC2の起動停止をタグで制御する覚書です。

以前は、インスタンスIDを直接指定してしまっていたのですが、
インスタンスが増えてきたという理由もあり、管理も大変になってきた為に、
タグで制御するようにしてみました。

Lambdaで言語はPython2.7を選択して下記スクリプトを記載。

import boto3

def lambda_handler(event, context):

    # リージョンを指定
    ec2 = boto3.client('ec2', "ap-northeast-1")
    resp = ec2.describe_instances()
    targets = []
    for reservation in resp['Reservations']:
      for instance in reservation['Instances']:
        if 'Tags' in instance:
            for tag in instance['Tags']:

                # タグが isSchedule の場合に、値が true を対象
                if tag['Key'] == 'isSchedule' and tag['Value'] == 'true':
                    targets.append(instance['InstanceId'])

    if len(targets) > 0:
        ec2.start_instances(InstanceIds=targets)
        print 'started instances: ' + str(targets)

例外とかはきちんと処理してログ出したほうがいいのかな。

終了させる場合は、最後から2行目を下記に変更。
ec2.stop_instances(InstanceIds=targets)