Python과 Boto3로 AWS CloudWatch Log Group 태깅 자동화하기

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의 다른 글
같은 저자, 다른 영역의 사이트 두 개.