AWS 리소스의 적절한 태깅은 효율적인 리소스 관리, 비용 할당, 감사에 매우 중요하다. 수많은 AWS Elastic Container Registry(ECR) 리포지토리가 있다면 수동 태깅은 지루하고 오류가 발생하기 쉽다. 이 글에서는 Python과 AWS SDK for Python(Boto3)을 사용하여 ECR 리포지토리의 태깅을 자동화하는 간단하고 효과적인 솔루션을 제공한다.

태깅을 자동화해야 하는 이유

태깅 자동화는 시간을 절약하고 일관성을 보장하며 비용이 많이 드는 실수를 방지한다. 태그는 특정 프로젝트, 환경, 또는 비용 센터와 관련된 리소스를 추적하는 데 도움이 된다.

사전 요구사항

  • Python 3 설치
  • AWS CLI 설치 및 구성
  • Boto3 라이브러리 설치 (pip install boto3)
  • IAM 권한:
    • ecr:DescribeRepositories
    • ecr:ListTagsForResource
    • ecr:TagResource

Python으로 AWS ECR 리포지토리 태깅하기

다음은 Boto3를 사용하여 현재 태그가 없는 모든 ECR 리포지토리에 미리 정의된 태그를 추가하는 간단한 Python 스크립트다.

Python 스크립트

import boto3

AWS_REGION = ’eu-central-1’ # 실제 리전으로 교체

태그 정의

TAGS_TO_APPLY = [ {‘Key’: ‘provisioned’, ‘Value’: ‘manual’}, {‘Key’: ’environment’, ‘Value’: ‘dev’}, {‘Key’: ‘project’, ‘Value’: ‘Project_Name’}, ]

def tag_ecr_repositories(): ecr_client = boto3.client(’ecr’, region_name=AWS_REGION)

paginator = ecr_client.get_paginator('describe_repositories')
for page in paginator.paginate():
    for repo in page['repositories']:
        repo_arn = repo['repositoryArn']
        repo_name = repo['repositoryName']

        existing_tags = ecr_client.list_tags_for_resource(resourceArn=repo_arn).get('tags', [])

        if not existing_tags:
            print(f"Adding tags to repository '{repo_name}'")
            ecr_client.tag_resource(resourceArn=repo_arn, tags=TAGS_TO_APPLY)
        else:
            print(f"Repository '{repo_name}' already has tags. Skipping.")

if name == ‘main’: tag_ecr_repositories()

이 스크립트는 자동으로 ECR 리포지토리를 스캔하여 현재 태그가 없는 리포지토리에만 태그를 추가한다.

이점

  • 소중한 관리 시간 절약.
  • AWS 환경 전반의 일관성 보장.
  • 인적 오류 위험 감소.

결론

AWS 리소스의 태깅을 자동화하는 것은 효과적인 클라우드 관리를 위한 필수 관행이다. Python과 Boto3를 사용하면 이 작업이 크게 단순화되어 AWS 리소스가 조직화되고 쉽게 관리 가능한 상태로 유지된다.