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

Boto3を使ってAWS Glue Data Catalogから分類子(Classifier)の詳細を取得する方法

AWS Glue Data Catalogには、クローラがデータ形式を自動的に識別するために使用する「分類子(Classifier)」を登録できます。本記事では、Pythonのboto3ライブラリを使って、登録済みの分類子の詳細情報を取得する方法を解説します。例として、「xml-test」という名前の分類子の詳細を取得してみましょう。

分類子(Classifier)とは

分類子は、AWS GlueのクローラがS3などのデータストア内のデータを解析する際に、そのデータがJSON・CSV・XML・Grokパターンなどのどの形式に該当するかを判定するために利用される仕組みです。get_classifier APIを呼び出すことで、特定の分類子の種類、分類名、作成日時、最終更新日時、バージョン、Grokパターンといったメタデータを確認できます。

解決のためのアプローチとアルゴリズム

ステップ1 − boto3とbotocore.exceptionsをインポートし、例外を適切にハンドリングできるようにします。

ステップ2 − 詳細を確認したい分類子の名前をclassifier_nameパラメータとして渡します。

ステップ3 − boto3ライブラリでAWSセッションを作成します。デフォルトプロファイルにregion_nameが設定されていることを確認してください。設定されていない場合は、セッション作成時にregion_nameを明示的に指定します。

ステップ4 − AWS Glue用のクライアントオブジェクトを作成します。

ステップ5get_classifierを呼び出し、Nameパラメータにclassifier_nameを渡します。

ステップ6 − 指定した分類子の詳細情報がレスポンスとして返されます。

ステップ7 − 取得処理中に予期しないエラーが発生した場合に備えて、汎用例外のハンドリングも実装しておきます。

コード例

以下のコードを使用すると、AWS Glue Data Catalogから分類子の詳細を取得できます。

import boto3
from botocore.exceptions import ClientError

def get_classifier_details(classifier_name):
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        response = glue_client.get_classifier(Name=classifier_name)
        return response
    except ClientError as e:
        raise Exception("boto3 client error in get_classifier_details: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in get_classifier_details: " + e.__str__())

print(get_classifier_details("xml-test"))

出力結果

スクリプトを実行すると、指定した分類子の詳細が以下のようなJSON形式で返されます。

{'Classifier': {'GrokClassifier': {'Name': 'xml-test', 'Classification':
'xml', 'CreationTime': datetime.datetime(2018, 6, 21, 4, 7, 4,
tzinfo=tzlocal()), 'LastUpdated': datetime.datetime(2018, 6, 21, 4, 7,
11, tzinfo=tzlocal()), 'Version': 2, 'GrokPattern': 'SYSLOGTIMESTAMP
%{MONTH} +%{MONTHDAY} %{TIME}'}}, 'ResponseMetadata': {'RequestId':
'c291cce2-…………-3552077ddefd', 'HTTPStatusCode': 200, 'HTTPHeaders':
{'date': 'Sun, 21 Feb 2021 07:58:09 GMT', 'content-type':
'application/x-amz-json-1.1', 'content-length': '218', 'connection':
'keep-alive', 'x-amzn-requestid': 'c291cce2-……….-3552077ddefd'},
'RetryAttempts': 0}}

まとめ

boto3のget_classifier APIを使えば、AWS Glue Data Catalogに登録された分類子の詳細を簡単に取得できます。なお、複数の分類子を一括で取得したい場合はget_classifiers APIを使用してください。また、この操作を実行するIAMユーザーやロールにはglue:GetClassifier権限が必要となる点にも注意しましょう。

  1. Boto3を使ってAWS Glueデータカタログからデータベースを削除する方法

    課題Pythonのboto3ライブラリを使用して、自分のAWSアカウント内に作成されたデータベースを削除します。例 − アカウントに作成された「Portfolio」というデータベースを削除します。解決のためのアプローチとアルゴリズムステップ1 − 例外をハンドリングするために、boto3とbotocoreの例外モジュールをインポートします。ステップ2 − AWS Glue Catalogから削除したいデータベース名を database_name パラメータとして渡します。ステップ3 − boto3ライブラリを使ってAWSセッションを作成します。デフォルトプロファイルに region_name

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

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