🐒
【まとめ編】AWS Boto3 by Pythonで特定タグ付与状況のリスト抽出
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