AWS CloudWatchロググループのタグ管理は、運用の可視性、コスト管理、効果的なリソース整理に不可欠だ。ロググループの手動タグ付けは、特に多数のロググループを扱う場合に面倒になりがちだ。この記事では、PythonとAWS SDK for Python(Boto3)を使用してこのタスクを自動化する簡単な方法を解説する。

CloudWatchロググループのタグ付け自動化の重要性

自動化が保証するもの:

  • AWSリソース全体での一貫したタグ付け
  • 手動作業とヒューマンエラーの削減
  • コストと使用量の正確な追跡能力の向上

前提条件

  • Python 3がインストール済み
  • 適切な権限でAWS CLIが設定済み
  • Boto3(pip install boto3
  • IAM権限:
    • logs:DescribeLogGroups
    • logs:ListTagsLogGroup
    • logs: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環境の維持に役立つ。