Python
 Computer >> コンピューター >  >> プログラミング >> Python

Boto3でAWS Glueリソースにタグを追加する方法を解説

本記事では、Pythonのboto3ライブラリを使用して、AWS Glueリソースにタグを追加する方法を詳しく解説します。タグを活用することで、リソースの管理やコスト配分、アクセス制御が容易になります。

実現したいこと

AWS Glueデータベースに対して、「glue-db: test」というタグを追加します。

課題: Pythonでboto3ライブラリを使用し、AWS Glueリソースにタグを追加する。

解決のためのアプローチ

  • ステップ1: boto3とbotocoreの例外クラス(ClientErrorなど)をインポートし、例外処理に備えます。
  • ステップ2: 関数に必要なパラメータは resource_arn(対象リソースのARN)と tags_dict(追加するタグの辞書)です。

resource_arn の形式

Glueリソースの種類ごとに、ARNは以下の形式で指定します。

Catalogarn:aws:glue:region:account-id:catalog
Databasearn:aws:glue:region:account-id:database/database name
Tablearn:aws:glue:region:account-id:table/database name/table name
Connectionarn:aws:glue:region:account-id:connection/connection name
Crawlerarn:aws:glue:region:account-id:crawler/crawler-name
Jobarn:aws:glue:region:account-id:job/job-name
Triggerarn:aws:glue:region:account-id:trigger/trigger-name
Development endpointarn:aws:glue:region:account-id:devEndpoint/development-endpoint-name
Machine learning transformarn:aws:glue:region:account-id:mlTransform/transform-id

tags_dict の形式

タグはキーと値のペアを持つ辞書として指定します。例: {"key":"value", ...}

  • ステップ3: boto3ライブラリを使用してAWSセッションを作成します。デフォルトプロファイルに region_name が設定されていることを確認してください。設定されていない場合は、セッション作成時に明示的に region_name を渡す必要があります。
  • ステップ4: glue 用のAWSクライアントを作成します。
  • ステップ5: tag_resource 関数を呼び出し、ResourceArn パラメータに resource_arn を、TagsToAdd パラメータに tags_dict を渡します。
  • ステップ6: レスポンスメタデータが返され、リソースにタグが追加されます。
  • ステップ7: タグ追加中に問題が発生した場合に備え、汎用例外のハンドリングも実装しておきます。

サンプルコード

以下のコードを使用してタグを追加できます。

import boto3
from botocore.exceptions import ClientError

def add_tags_in_resource(resource_arn, tags_dict):
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        response = glue_client.tag_resource(ResourceArn=resource_arn, TagsToAdd=tags_dict)
        return response
    except ClientError as e:
        raise Exception("boto3 client error in add_tags_in_resource: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in add_tags_in_resource: " + e.__str__())

tags_dict = {"glue-db": "test"}
print(add_tags_in_resource("arn:aws:glue:us-east-1:1122225*****88:database/test-db", tags_dict))

実行結果

{'ResponseMetadata': {'RequestId': 'c9f418b0-***************-fb96', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Fri, 02 Apr 2021 08:04:54 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '27', 'connection': 'keep-alive', 'x-amzn-requestid': 'c9f418b0-******************-fb96'}, 'RetryAttempts': 0}}

まとめ

boto3の tag_resource APIを使えば、わずか数行のコードでAWS Glueの各種リソース(データベース、テーブル、クローラー、ジョブなど)にタグを追加できます。HTTPステータスコード200が返れば、タグの追加は成功です。タグを活用して、AWS環境におけるリソース管理をより効率的に行いましょう。

  1. Boto3を使ってAWS Glueデータカタログのクローラーを起動する方法

    この記事では、Pythonのboto3ライブラリを使用して、AWS Glueデータカタログ上のクローラーを起動する方法を解説します。課題課題: Pythonのboto3ライブラリを使って、クローラーを起動します。解決のためのアプローチとアルゴリズムステップ1: 例外処理のためにboto3およびbotocoreの例外モジュールをインポートします。ステップ2: 関数のパラメータとしてcrawler_name(クローラー名)を受け取ります。ステップ3: boto3ライブラリを使用してAWSセッションを作成します。デフォルトプロファイルにregion_nameが設定されていることを確認してください。設

  2. Boto3を使ってAWS Glueのジョブを削除する方法を徹底解説

    AWS Glueは、ETL(抽出・変換・ロード)処理を簡単に実行できるサーバーレスのデータ統合サービスです。本記事では、Pythonのboto3ライブラリを使用して、自分のAWSアカウント内に作成済みのGlueジョブを削除する方法を、ステップごとにわかりやすく解説します。 課題 Pythonのboto3ライブラリを使って、AWSアカウント内に作成されたGlueジョブを削除します。 例: アカウント内に作成された「transfer_from_s3」というGlueジョブを削除します。 解決のためのアプローチとアルゴリズム ステップ1: 例外処理のために、boto3とbotocoreの例外モジュール