Boto3で特定のタグが付与されたインスタンスを停止する


以前作成した特定のインスタンスをBoto3でstop処理をパワーアップさせてみました。

前提として
EC2にenvタグを付与しておき値はdevとして設定したインスタンスを仕込んでおきます。

Filtersの処理が上手く出来なかったですが、なんとか出来ました。
記念にブログアップ。次はLambdaと連携してみる。

# -*- coding: utf-8 -*-

# import
import boto3
from boto3.session import Session

ec2 = boto3.client('ec2')
dev_list = []

# def
def get_list():
  instance_list = ec2.describe_instances(
    Filters=[{'Name': 'tag:env', 'Values': ['dev']}]
  )
  for Reservations in instance_list['Reservations']:
    for dev_instances in Reservations['Instances']:
      dev_list.append(dev_instances["InstanceId"])
      return dev_list

def ec2_stop(dev_list):
  for instance_id in dev_list:
    response = ec2.stop_instances(
      InstanceIds=[
        instance_id
      ]
    )

# Main
if __name__ == "__main__":
  get_list()
  ec2_stop(dev_list)