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

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 を省略すれば、現在のアカウントのステータスが自動的に取得されるため、非常に便利です。

  1. Boto3でAWS Glueジョブを実行し、実行状態(ステータス)を確認する方法

    概要Pythonのboto3ライブラリを使ってAWS Glueジョブを実行し、その結果が「成功」なのか「失敗」なのかといった実行状態を取得する方法を解説します。例として、run_s3_file_jobというジョブを実行し、そのステータスを確認してみましょう。解決のためのアプローチステップ1: boto3とbotocoreの例外クラスをインポートし、例外処理に備えます。ステップ2: 関数の必須パラメータはjob_nameのみで、argumentsは任意パラメータです。引数が必要なジョブの場合は、辞書形式で渡します。例:arguments = {argument1: value1, argumen

  2. 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の認証情報(アクセスキー・シークレットキー)が適切に設定されていることを確認してください。解決のための手