Boto3を使用して移行操作のステータスを取得する方法
課題の概要
Pythonのboto3ライブラリを使用して、AWS Glueデータカタログの移行(インポート)操作のステータスを取得します。
例: アカウント内で実行された移行操作のステータスを取得します。
解決のためのアプローチと手順
ステップ1: 例外処理のために、boto3とbotocore.exceptionsをインポートします。
ステップ2: 移行ステータスを確認したい対象の catalog_id をパラメータとして渡します。なお、このパラメータは省略可能です。指定しなかった場合は、デフォルトでログイン中のユーザーアカウントに対して、移行が進行中か完了済みかが確認されます。catalog_id とは、ユーザーアカウントIDそのものです。
ステップ3: boto3ライブラリを使ってAWSセッションを作成します。デフォルトプロファイルに region_name が設定されていることを確認してください。設定されていない場合は、セッション作成時に region_name を明示的に指定する必要があります。
ステップ4: AWS Glue用のクライアントを作成します。
ステップ5: get_catalog_import_status を呼び出し、catalog_id を CatalogId パラメータとして渡します。
ステップ6: 実行中の移行操作がある場合はその詳細情報が取得され、ない場合は直近の移行操作の詳細が返されます。
ステップ7: ステータス確認中にエラーが発生した場合に備え、汎用的な例外処理も実装しておきます。
サンプルコード
以下のコードを使用すると、移行操作のステータスを取得できます。
import boto3
from botocore.exceptions import ClientError
def status_of_migration(catalog_id = None):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
response = glue_client.get_catalog_import_status(CatalogId = catalog_id)
return response
except ClientError as e:
raise Exception( "boto3 client error in status_of_migration: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in status_of_migration: " + e.__str__())
print(status_of_migration())
実行結果
{'ImportStatus': {'ImportCompleted': True, 'ImportTime':
datetime.datetime(2017, 11, 17, 1, 32, 44, tzinfo=tzlocal()),
'ImportedBy': 'StatusSetByDefault'}, 'ResponseMetadata': {'RequestId':
'7c33d6f9-………………..-3b202961e3e7', 'HTTPStatusCode': 200, 'HTTPHeaders':
{'date': 'Sun, 21 Feb 2021 05:40:06 GMT', 'content-type':
'application/x-amz-json-1.1', 'content-length': '102', 'connection':
'keep-alive', 'x-amzn-requestid': '7c33d6f9-……….…………….-3b202961e3e7'},
'RetryAttempts': 0}}
まとめ
boto3の get_catalog_import_status APIを利用することで、AWS Glueデータカタログへのインポート(移行)操作が完了しているかどうかを簡単に確認できます。catalog_id を省略すれば、現在のアカウントのステータスが自動的に取得されるため、非常に便利です。
-
Boto3でAWS Glueジョブを実行し、実行状態(ステータス)を確認する方法
概要Pythonのboto3ライブラリを使ってAWS Glueジョブを実行し、その結果が「成功」なのか「失敗」なのかといった実行状態を取得する方法を解説します。例として、run_s3_file_jobというジョブを実行し、そのステータスを確認してみましょう。解決のためのアプローチステップ1: boto3とbotocoreの例外クラスをインポートし、例外処理に備えます。ステップ2: 関数の必須パラメータはjob_nameのみで、argumentsは任意パラメータです。引数が必要なジョブの場合は、辞書形式で渡します。例:arguments = {argument1: value1, argumen
-
PythonのBoto3ライブラリを使ってAWS S3のバケット一覧を取得する方法
問題の概要: Pythonのboto3ライブラリを使用して、AWSアカウント内に存在するすべてのS3バケットの一覧を取得します。例: BUCKET_1、BUCKET_2、BUCKET_3 のようなバケット名の一覧を取得します。boto3とはboto3は、PythonからAWSの各種サービスを操作するための公式SDKです。S3やEC2、DynamoDBなど、多くのAWSリソースをPythonコードから簡単に扱えます。使用前には pip install boto3 でインストールしておき、AWSの認証情報(アクセスキー・シークレットキー)が適切に設定されていることを確認してください。解決のための手