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

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関数にデータベース名を指定して使用します。
  1. Boto3を使ってAWS Glue Data Catalogからテーブルを削除する方法

    はじめにPythonのboto3ライブラリを使用すると、AWS Glue Data Catalogに作成したテーブルをプログラムから簡単に削除できます。本記事では、boto3を使ってアカウント内のデータベースからテーブルを削除する手順を、サンプルコードとともにわかりやすく解説します。課題Pythonのboto3ライブラリを使って、自分のアカウントに作成されたテーブルを削除します。例: アカウント内のデータベース「test」から、「security」という名前のテーブルを削除します。解決のためのアプローチとアルゴリズム以下の手順でテーブルを削除できます。ステップ1: boto3と、例外処理のため

  2. Boto3を使ってAWS Glueデータカタログからクローラーを削除する方法

    本記事では、Pythonのboto3ライブラリを使用して、AWSアカウント内に作成されたGlueクローラーを削除する手順を解説します。AWS Glueのクローラーは、S3などのデータソースをスキャンしてデータカタログにテーブル定義を作成する重要なコンポーネントですが、不要になったクローラーは適切に削除することでリソースを整理できます。 課題 − Pythonのboto3ライブラリを使って、自分のアカウントに作成されたクローラーを削除する。 例 − アカウントに作成された「Portfolio」という名前のクローラーを削除する。 問題解決のアプローチとアルゴリズム ステップ1 − 例外処理のため