Boto3を使ってAWS Glueリソースのタグを取得する方法
本記事では、Pythonのboto3ライブラリを使用して、AWS Glueリソースに紐づけられたタグ情報を取得する方法を解説します。
実現したいこと
AWS Glueデータベースから「glue-db: test」といったタグを取得することを例に、具体的な手順を見ていきましょう。
課題: Pythonでboto3ライブラリを使い、AWS Glueリソースからタグを取得するコードを実装します。
全体の流れ(アプローチ)
ステップ1: 例外処理のために boto3 および botocore の例外クラスをインポートします。
ステップ2: この関数では resource_arn(対象リソースのARN)が必須パラメータとなります。
resource_arnは、リソースの種類ごとに以下の形式で指定します。
| カタログ(Catalog) | arn:aws:glue:region:account-id:catalog |
| データベース(Database) | arn:aws:glue:region:account-id:database/データベース名 |
| テーブル(Table) | arn:aws:glue:region:account-id:table/データベース名/テーブル名 |
| 接続(Connection) | arn:aws:glue:region:account-id:connection/接続名 |
| クローラー(Crawler) | arn:aws:glue:region:account-id:crawler/クローラー名 |
| ジョブ(Job) | arn:aws:glue:region:account-id:job/ジョブ名 |
| トリガー(Trigger) | arn:aws:glue:region:account-id:trigger/トリガー名 |
| 開発エンドポイント(DevEndpoint) | arn:aws:glue:region:account-id:devEndpoint/開発エンドポイント名 |
| MLトランスフォーム(Machine learning transform) | arn:aws:glue:region:account-id:mlTransform/トランスフォームID |
ステップ3: boto3を使ってAWSセッションを作成します。デフォルトプロファイルにregion_nameが設定されていることを確認してください。設定されていない場合は、セッション作成時に明示的にregion_nameを渡す必要があります。
ステップ4: glue用のAWSクライアントを作成します。
ステップ5: get_tags関数を呼び出し、パラメータ ResourceArn として resource_arn を渡します。
ステップ6: レスポンスとして、リソースのタグとレスポンスメタデータが返されます。
ステップ7: タグ取得時に問題が発生した場合に備え、汎用的な例外処理を実装しておきます。
サンプルコード
以下のコードでタグを取得できます。
import boto3
from botocore.exceptions import ClientError
def get_tags_from_resource(resource_arn):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
response = glue_client.get_tags(ResourceArn=resource_arn)
return response
except ClientError as e:
raise Exception("boto3 client error in get_tags_from_resource: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in get_tags_from_resource: " + e.__str__())
print(get_tags_from_resource("arn:aws:glue:us-east-1:1122225*****88:database/test-db"))実行結果
{'Tags': {'glue-job': 'test'}, 'ResponseMetadata': {'RequestId': 'c9f418b0-8d02-4a26-*************', '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-8d02-4a26-**************'}, 'RetryAttempts': 0}}このように、get_tags APIを利用すれば、Glueデータベースだけでなく、テーブルやジョブ、クローラーなど、ARN形式で指定できるあらゆるGlueリソースのタグを簡単に取得できます。タグはコスト配分やアクセス制御、リソース管理に活用できるため、運用自動化の際にも非常に便利です。
-
Boto3を使ってAWS Glueのジョブを削除する方法を徹底解説
AWS Glueは、ETL(抽出・変換・ロード)処理を簡単に実行できるサーバーレスのデータ統合サービスです。本記事では、Pythonのboto3ライブラリを使用して、自分のAWSアカウント内に作成済みのGlueジョブを削除する方法を、ステップごとにわかりやすく解説します。 課題 Pythonのboto3ライブラリを使って、AWSアカウント内に作成されたGlueジョブを削除します。 例: アカウント内に作成された「transfer_from_s3」というGlueジョブを削除します。 解決のためのアプローチとアルゴリズム ステップ1: 例外処理のために、boto3とbotocoreの例外モジュール
-
Boto3を使ってAWS Glueデータカタログからクローラーを削除する方法
本記事では、Pythonのboto3ライブラリを使用して、AWSアカウント内に作成されたGlueクローラーを削除する手順を解説します。AWS Glueのクローラーは、S3などのデータソースをスキャンしてデータカタログにテーブル定義を作成する重要なコンポーネントですが、不要になったクローラーは適切に削除することでリソースを整理できます。 課題 − Pythonのboto3ライブラリを使って、自分のアカウントに作成されたクローラーを削除する。 例 − アカウントに作成された「Portfolio」という名前のクローラーを削除する。 問題解決のアプローチとアルゴリズム ステップ1 − 例外処理のため