Boto3を使ってAWS Glueデータカタログから全データベースの詳細情報を取得する方法
課題
Pythonのboto3ライブラリを使用して、AWS Glueデータカタログに登録されているすべてのデータベースの定義情報を取得します。
解決のアプローチ
ステップ1: まず、boto3とbotocore.exceptionsをインポートし、例外処理に備えます。
ステップ2: この操作には特別なパラメータは不要です。
ステップ3: boto3ライブラリでAWSセッションを作成します。デフォルトプロファイルにregion_nameが設定されていることを確認してください。設定されていない場合は、セッション作成時に明示的にregion_nameを渡す必要があります。
ステップ4: AWS Glue用のクライアントを作成します。
ステップ5: get_databases関数を呼び出します。
ステップ6: この関数は、ユーザーのAWSアカウント内に存在するすべてのデータベースの定義を返します。
ステップ7: 処理中に予期しない問題が発生した場合に備え、汎用的な例外処理も実装しておきます。
サンプルコード
以下のコードを使用すると、すべてのデータベースの定義情報を取得できます。
import boto3
from botocore.exceptions import ClientError
def retrieves_all_database_details():
session = boto3.session.Session()
glue_client = session.client('glue')
try:
response = glue_client.get_databases()
return response
except ClientError as e:
raise Exception("boto3 client error in retrieves_all_database_details: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in retrieves_all_database_details: " + e.__str__())
print(retrieves_all_database_details())
出力結果
実行すると、以下のようにアカウント内の各データベース名、作成日時、説明などの情報が辞書形式で返されます。
{'DatabaseList': [
{'Name': 'QA-test', 'CreateTime': datetime.datetime(2020, 11, 18, 14, 24, 46, tzinfo=tzlocal())},
{'Name': 'custdb', 'CreateTime': datetime.datetime(2020, 8, 31, 20, 30, 9, tzinfo=tzlocal())},
{'Name': 'default', 'Description': 'Default Hive database',
'LocationUri': 'hdfs://ip-************.ec2.internal:****/user/hive/warehouse', 'CreateTime':
datetime.datetime(2018, 5, 25, 16, 4, 54, tzinfo=tzlocal())},
'NextToken': 'eyJsYXN0RXZhbHVhdGVkS2V5Ijp7IkhBU0hfS0VZIjp7InMiOiJuLjc4MjI1ODQ4NTg0MSJ9LCJSQU5HRV9LRVkiOnsicyI6InN************Mjk3NywibmFub3MiOjIyNTA***********NvbnRleHQiOmZhbHNlfQ==',
'ResponseMetadata': {'RequestId': 'fa0a2069-***********-a0617',
'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sun, 28 Feb 2021 12:49:37 GMT', 'content-type': 'application/x-amz-json-1.1', 'contentlength': '25749', 'connection': 'keep-alive', 'x-amzn-requestid': 'fa0a2069-************a0617'}, 'RetryAttempts': 0}}補足ポイント
- データベース数が多い場合、レスポンスにはNextTokenが含まれます。次のリクエストでこのトークンをNextTokenパラメータとして渡すことで、残りのデータベースをページングしながら取得できます。
- 特定のデータベースのみが必要な場合は、代わりにget_database関数にデータベース名を指定して使用します。
-
Boto3を使ってAWS Glue Data Catalogからテーブルを削除する方法
はじめにPythonのboto3ライブラリを使用すると、AWS Glue Data Catalogに作成したテーブルをプログラムから簡単に削除できます。本記事では、boto3を使ってアカウント内のデータベースからテーブルを削除する手順を、サンプルコードとともにわかりやすく解説します。課題Pythonのboto3ライブラリを使って、自分のアカウントに作成されたテーブルを削除します。例: アカウント内のデータベース「test」から、「security」という名前のテーブルを削除します。解決のためのアプローチとアルゴリズム以下の手順でテーブルを削除できます。ステップ1: boto3と、例外処理のため
-
Boto3を使ってAWS Glueデータカタログからクローラーを削除する方法
本記事では、Pythonのboto3ライブラリを使用して、AWSアカウント内に作成されたGlueクローラーを削除する手順を解説します。AWS Glueのクローラーは、S3などのデータソースをスキャンしてデータカタログにテーブル定義を作成する重要なコンポーネントですが、不要になったクローラーは適切に削除することでリソースを整理できます。 課題 − Pythonのboto3ライブラリを使って、自分のアカウントに作成されたクローラーを削除する。 例 − アカウントに作成された「Portfolio」という名前のクローラーを削除する。 問題解決のアプローチとアルゴリズム ステップ1 − 例外処理のため