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リソースのタグ付けの自動化は、効果的なクラウド管理に不可欠なプラクティスだ。Boto3を使用したPythonはこのタスクを大幅に簡素化し、AWSリソースを整理された管理しやすい状態に保つ。