0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

boto3 で EC2 のインスタンスのタグをつけたり消したりしたい

Posted at

目的

EC2 のタグを操作したいpython を使いたいので前回使った AWS cli ではなくて boto3 を使う。

やってみた

コマンドライン引数でインスタンスのIDや設定・削除するタグのKey、Valueを設定したい!

tag.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import boto3
import sys
from boto3.session import Session

def ec2_client():
    session = Session(profile_name='default')
    client = session.client('ec2')
    # profileの指定が必要ない場合
    # client = boto3.client('ec2')
    return client


def show_tag(instances=[]):
    response = ec2_client().describe_tags(Filters=[{'Name': 'resource-id','Values': instances}])
    print(response)

def create_tag(instances,key,value):
    response = ec2_client().create_tags(Resources=instances,Tags=[{'Key': key,'Value': value}])
    print(response)

def delete_tag(instances,key,value):
    response = ec2_client().delete_tags(Resources=instances,Tags=[{'Key': key,'Value': value}])
    print(response)

if __name__ == '__main__':

    args = sys.argv
    app_name  = args.pop(0)
    if len(args) != 4 :
        print('ex)' + app_name + ' show|create|delete instance_id key value')
        exit()

    command = args.pop(0)
    instances = args.pop(0).split(',')
    key = args.pop(0)
    value = args.pop(0)

    print('command:' + command )
    print('instances:' + str(instances))
    print('key:' + key)
    print('value:' + value)

    if command == 'show':
        show_tag(instances)
    elif command == 'create':
        create_tag(instances,key,value)
    elif command == 'delete':
        delete_tag(instances,key,value)
    else:
        print('first argument must be "show" , "create" or "delete"')

使い方

# 指定した id のインスタンスに設定されているタグを表示する key と val は使用されないが設定が必要(手抜き)
python tag.py show i-xxxxxxxx,i-yyyyyyyyy key val

# 指定した id のインスタンスに key , valu を設定する。既に key が存在する場合は上書きされる。
python tag.py create i-xxxxxxxx,i-yyyyyyyyy key val

# 指定した id のインスタンスに設定されている key , val を削除する。
python tag.py delete i-xxxxxxxx,i-yyyyyyyyy key val

調べて参考にしたサイト(感謝)

boto3 を使ったいい感じのサンプル

python コマンドライン引数

boto3 ドキュメント

describe_tags は ページングとかいろいろできるっぽい

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?