PythonのBoto3ライブラリを使用してAWS Glueジョブを実行する方法
はじめに
本記事では、Pythonのboto3ライブラリを使用して、AWS Glueのジョブを実行する方法を解説します。例として、「run_s3_file_job」という既存のGlueジョブを起動するケースを取り上げます。
解決のためのアプローチとアルゴリズム
ステップ1 − 例外ハンドリングのために、boto3とbotocoreの例外モジュールをインポートします。
ステップ2 − 関数のパラメータとして、job_nameは必須、argumentsは任意です。一部のジョブは実行時に引数を必要とします。その場合は、辞書型(dict)として引数を渡します。
例:arguments = {'argument1': 'value1', 'argument2': 'value2'}
ジョブが引数を必要としない場合は、job_nameだけを渡せば問題ありません。
ステップ3 − boto3ライブラリを使ってAWSセッションを作成します。デフォルトプロファイルにregion_nameが設定されていることを確認してください。設定されていない場合は、セッション作成時に明示的にregion_nameを指定する必要があります。
ステップ4 − Glue用のAWSクライアントを作成します。
ステップ5 − start_job_run関数を呼び出し、JobNameと(必要に応じて)Argumentsを渡してジョブを起動します。
ステップ6 − ジョブが起動すると、ジョブのメタデータとともにjob_run_idが返されます。このIDは、後からget_job_runなどでジョブの実行状況を確認する際に利用できます。
ステップ7 − ジョブの実行中に予期しない問題が発生した場合に備えて、汎用的な例外処理も実装しておきます。
サンプルコード
既存のGlueジョブを実行するには、以下のコードを使用します。
import boto3
from botocore.exceptions import ClientError
def run_glue_job(job_name, arguments = {}):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
job_run_id = glue_client.start_job_run(JobName=job_name, Arguments=arguments)
return job_run_id
except ClientError as e:
raise Exception("boto3 client error in run_glue_job: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in run_glue_job: " + e.__str__())
print(run_glue_job("run_s3_file_job"))出力結果
{'JobRunId':
'jr_5f8136286322ce5b7d0387e28df6742abc6f5e6892751431692ffd717f45fc00',
'ResponseMetadata': {'RequestId': '36c48542-a060-468b-83ccb067a540bc3c', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sat, 13 Feb 2021 13:36:50 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '82', 'connection': 'keep-alive', 'x-amzn-requestid': '36c48542-a060-468b-83cc-b067a540bc3c'}, 'RetryAttempts': 0}}コードのポイント
このスクリプトでは、まずboto3.session.Session()でAWSセッションを確立し、そこからclient('glue')を呼び出してGlueクライアントを生成しています。start_job_runメソッドを実行すると、Glueジョブは非同期で開始され、レスポンスとしてJobRunIdが返されます。HTTPステータスコードが200であれば、ジョブの起動リクエストが正常に受け付けられたことを意味します。なお、認証情報やリージョンの設定不備などAWS側でエラーが発生した場合はClientErrorとして捕捉され、それ以外の予期しないエラーも適切に例外として再送出されるようになっています。
-
Pythonプログラムの実行方法まとめ!IDLE・コマンドライン・PyCharmなど5つの方法を解説
コードを書いたら、次はそれを実行して出力結果を確認する必要があります。プログラムを実行することで、書いたコードが正しく動作し、期待通りの結果が得られるかどうかをチェックできます。幸いなことに、Pythonプログラムの実行はとても簡単です。この記事では、代表的な5つの実行方法をわかりやすく解説します。IDLEで実行するPythonに標準で付属しているIDLEを使ってプログラムを実行するには、以下の手順に従います。Pythonのコードを書いて保存します。メニューから「Run > Run Module」を選択するか、キーボードのF5キーを押すだけで実行できます。IDLEは初心者にとって扱いやす
-
PythonのTkinterでスレッドを使う方法|threadingモジュールによる非同期処理の基本
Tkinterでは、スレッド(Threading)を活用することで、複数の関数を同時に実行できます。これにより、アプリケーション内の処理を非同期で動かすことが可能になります。 Pythonでスレッドを使用するには、まずthreadingモジュールをインポートし、そのThreadクラスを継承した新しいクラスを定義します。そして、クラス内でrunメソッドをオーバーライドし、実行したい処理をその中に記述します。 つまり、スレッドを使えば複数の作業を並行して進めることができます。Tkinterアプリケーションでスレッドを実現する際は、Thread()関数を利用します。 ここでは、「一定時間スリープした