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 환경을 유지하는 데 도움이 된다.