🐒

【まとめ編】AWS Boto3 by Pythonで特定タグ付与状況のリスト抽出

2023/03/15に公開約1,800字

1. 本稿の概要

◆ ゴール

以下のような機能を満たすPythonスクリプトを作成しました。

  • 各種AWSリソースで特定タグ(Owner)の付与状況をリスト可
  • ローカル環境でI/Oが自由なPythonスクリプトとして実行
  • その抽出結果はCSVカンマ区切り形式でローカルに出力

それを(弊社の中の)各主要サービスにおいて作成し、連結・自動化して一括自動出力まで目指す

◆ 背景

百人規模のグループのAWSで不特定多数のユーザによりリソースが作られ、ガバナンスも効いていない世界に迷い込んだ。用途不明のサーバが跋扈しコストと責任の追跡ができていない世紀末である。とりあえずAWSで管理用タグ(OwnerやCostCenterなど)が付いていないリソースを検挙し、保護者を割り当てたり削除を以て引導を渡したい。まずは可視化という点で当該タグのリスト化行う。

その方法論としてはタグエディタ、AWS CLIやLambdaなどいくらでもあるだろう。今回は我々の管理チームの拡張性や学習コストを考え、ローカルのPythonスクリプトで実行を目指したい。

◆ 本稿の前提・環境

  • AWSサービスやCLI、API利用の基本的な学習と設定類は済んでいる
    (ローカル環境でAWSシークレットアクセスキーをもって実行している)
  • 筆者はエンジニアでないのでコードの各種妥当性は悪しからず
  • Python3.7.9, Boto3

2. 開発

◆ 各サービス記事

◆ 各リージョンでの実行(大阪も実行可能)

check_owner_tag_ec2_all_region.py
from check_owner_tag_ec2 import check_owner_tag_ec2

def main():
    target_region_list = ['ap-south-1', 'eu-north-1', 'eu-west-3', 'eu-west-2', 'eu-west-1', 'ap-northeast-3', 'ap-northeast-2', 'ap-northeast-1', 'ca-central-1', 'sa-east-1', 'ap-southeast-1', 'ap-southeast-2', 'eu-central-1', 'us-east-1', 'us-east-2', 'us-west-1', 'us-west-2'] 
    
    for target_region in target_region_list:
        check_owner_tag_ec2(target_region)

if __name__ == "__main__":
    main()

Discussion

ログインするとコメントできます