PythonとBoto3を使ったAWS CloudWatchロググループのタグ付け自動化

AWS CloudWatchロググループのタグ管理は、運用の可視性、コスト管理、効果的なリソース整理に不可欠だ。ロググループの手動タグ付けは、特に多数のロググループを扱う場合に面倒になりがちだ。この記事では、PythonとAWS SDK for Python(Boto3)を使用してこのタスクを自動化する簡単な方法を解説する。
CloudWatchロググループのタグ付け自動化の重要性
自動化が保証するもの:
- AWSリソース全体での一貫したタグ付け
- 手動作業とヒューマンエラーの削減
- コストと使用量の正確な追跡能力の向上
前提条件
- Python 3がインストール済み
- 適切な権限でAWS CLIが設定済み
- Boto3(
pip install boto3) - IAM権限:
logs:DescribeLogGroupslogs:ListTagsLogGrouplogs:TagLogGroup
CloudWatchロググループのタグ付け用Pythonスクリプト
以下は、現在タグのないAWS CloudWatchロググループに特定のタグを自動的に適用するPythonスクリプトだ。
Pythonスクリプト
import boto3
AWS_REGION = ‘us-east-1’ # 自分のリージョンに置き換える
適用するタグ
TAGS_TO_APPLY = {
‘deployed_via’: ‘manual’,
’env_name’: ‘development’,
‘projectid’: ‘ID-12345’,
}
def tag_cloudwatch_log_groups():
logs_client = boto3.client(’logs’, region_name=AWS_REGION)
paginator = logs_client.get_paginator('describe_log_groups')
for page in paginator.paginate():
for log_group in page['logGroups']:
log_group_name = log_group['logGroupName']
existing_tags = logs_client.list_tags_log_group(logGroupName=log_group_name).get('tags', {})
if not existing_tags:
print(f"Adding tags to log group '{log_group_name}'")
logs_client.tag_log_group(
logGroupName=log_group_name,
tags=TAGS_TO_APPLY
)
else:
print(f"Log group '{log_group_name}' already has tags. Skipping.")
if name == ‘main’:
tag_cloudwatch_log_groups()
このスクリプトはすべてのCloudWatchロググループを反復処理し、現在タグのないロググループにのみタグを適用する。
利点
- 簡素化されたリソース管理
- 強化されたコスト配分と監査
- 効率化された運用タスク
結論
PythonとBoto3を使用したCloudWatchロググループのタグ付けの自動化は、管理タスクを簡素化し、よく整理されたコスト効率の高いAWS環境の維持に役立つ。
Ercan の他のサイト
同じ著者、別の領域のサイトが2つ。