Boto3を使ってAWS Glueワークフローの詳細情報を取得する方法
この記事では、Pythonのboto3ライブラリを使用して、AWSアカウント内に作成されたワークフローのリソースメタデータを取得する方法を解説します。
概要
AWS Glue Data Catalogに作成済みのワークフローについて、その詳細情報を取得する方法を見ていきましょう。
課題: Pythonのboto3ライブラリを使って、自分のアカウントに作成されたワークフローのメタデータを取得します。
解決のためのアプローチと手順
ステップ1: 例外処理のために、boto3とbotocoreの例外クラスをインポートします。
ステップ2: workflow_name(ワークフロー名)はこの関数に必須のパラメータです。指定したワークフローのメタデータが取得されます。
ステップ3: boto3ライブラリを使用してAWSセッションを作成します。デフォルトプロファイルにregion_name(リージョン名)が設定されていることを確認してください。設定されていない場合は、セッション作成時に明示的にregion_nameを渡す必要があります。
ステップ4: glueサービス用のAWSクライアントを作成します。
ステップ5: get_workflow関数を呼び出し、workflow_nameをNameパラメータとして渡します。
ステップ6: 指定したワークフローのメタデータが返されます。
ステップ7: 処理中に問題が発生した場合に備えて、汎用的な例外処理を実装します。
サンプルコード
以下のコードは、ユーザーアカウント内に作成されたワークフローの詳細情報を取得する例です。
import boto3
from botocore.exceptions import ClientError
def get_resource_metadata_of_workflow(workflow_name):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
response = glue_client.get_workflow(Name=workflow_name)
return response
except ClientError as e:
raise Exception("boto3 client error in get_resource_metadata_of_workflow: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in get_resource_metadata_of_workflow: " + e.__str__())
a = get_resource_metadata_of_workflow('dev-aiml-naviga-ods-load')
print(a)実行結果
上記のコードを実行すると、ワークフローの名前、作成日時、最終更新日時、ステータス、および各アクションの統計情報(成功・失敗・タイムアウトしたアクション数など)が含まれた辞書形式のレスポンスが出力されます。
{'Workflow': {'Name': 'dev-aiml-naviga-ods-load', 'DefaultRunProperties': {}, 'CreatedOn': datetime.datetime(2020, 5, 27, 3, 10, 57, 967000, tzinfo=tzlocal()), 'LastModifiedOn': datetime.datetime(2020, 5, 27, 3, 10, 57, 967000, tzinfo=tzlocal())}, 'StartedOn': datetime.datetime(2021, 2, 3, 16, 14, 48, 795000, tzinfo=tzlocal()), 'CompletedOn': datetime.datetime(2021, 2, 3, 16, 28, 6, 207000, tzinfo=tzlocal()), 'Status': 'COMPLETED', 'Statistics': {'TotalActions': 3, 'TimeoutActions': 0, 'FailedActions': 0, 'StoppedActions': 0, 'SucceededActions': 3, 'RunningActions': 0}}, 'MissingWorkflows': [], 'ResponseMetadata': {'RequestId': 'b328d064-24ab-48c4-b058-852387a3d474', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sat, 27 Feb 2021 13:57:37 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '2655', 'connection': 'keep-alive', 'x-amzn-requestid': 'b328d064-24ab-48c4-b058-852387a3d474'}, 'RetryAttempts': 0}}まとめ
このように、boto3のget_workflow APIを使用することで、AWS Glueで管理されているワークフローの実行状況や統計情報を簡単にプログラムから取得できます。エラーハンドリングを適切に実装することで、予期しない問題にも柔軟に対応できる堅牢なコードになります。
-
PythonとMatplotlibで点群の中心座標を取得・可視化する方法
一連のポイント(点群)の中心を求めるには、リスト内のすべての要素を合計し、その合計値をリストの要素数(長さ)で割ります。この計算結果が、対応する各軸における中心座標となります。これはいわゆる「平均値」であり、点群の重心を表します。実装の手順データポイントとして x 座標と y 座標の2つのリストを作成します。plot() メソッドを使って、x および y のデータポイントをプロットします。x と y の各リストから、sum() と len() を組み合わせて中心座標のタプルを算出します。算出した中心点をグラフ上にプロットします。annotate() メソッドを使い、中心点に「center」とい
-
Boto3とAWSクライアントを使ってS3バケットのライフサイクル構成を取得する方法
はじめに本記事では、Pythonのboto3ライブラリを使用して、Amazon S3バケットに設定されたライフサイクル構成(Lifecycle Configuration)を取得する方法を解説します。具体例として、S3上の「Bucket_1」に登録されているライフサイクルルールの情報を取得してみましょう。S3のライフサイクル構成を把握しておくと、ストレージクラスへの移行タイミングやオブジェクトの有効期限ポリシーなどをプログラムから確認でき、コスト管理や運用自動化に役立ちます。解決のためのアプローチとアルゴリズムステップ1 − 例外処理のために、boto3とbotocore.exceptions