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

Boto3を使用して実行中のGlueジョブのステータスを確認するにはどうすればよいですか?


問題の説明 − Pythonでboto3ライブラリを使用して、接着ジョブを実行し、成功したか失敗したかを示すステータスを取得します。たとえば、ジョブ run_s3_file_jobを実行します ステータスを取得します。

この問題を解決するためのアプローチ/アルゴリズム

ステップ1 −例外を処理するためにboto3およびbotocore例外をインポートします。

ステップ2 job_name は必須パラメータですが、引数 関数のオプションのパラメータです。実行するために引数を取るジョブはほとんどありません。その場合、引数はdictとして渡すことができます。

例: arguments ={‘arguments1’ =‘value1’、‘arguments2’ =‘value2’}

ジョブが引数を取らない場合は、job_nameを渡すだけです。

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

ステップ4 −接着剤用のAWSクライアントを作成します。

ステップ5 −ここで、start_job_run関数を使用し、必要に応じてJobNameと引数を渡します。

ステップ6 −ジョブが開始されると、 job_run_idが提供されます ジョブのメタデータを使用します。

ステップ7 −関数 get_job_runを使用します パラメータRunIdを渡します 前の関数の結果から。ステータスに関する辞書を返します。

ステップ8 −ここで、ジョブの特定のステータスを取得します。ジョブが完了していない場合はステータスが実行中である可能性があります。それ以外の場合は成功/失敗です。

ステップ9 −ジョブのチェック中に問題が発生した場合は、一般的な例外を処理します。

次のコードを使用して、既存の接着剤ジョブのステータスを実行して取得します-

import boto3
from botocore.exceptions import ClientError

def run_glue_job_get_status(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)
      status_detail = glue_client.get_job_run(JobName=job_name, RunId = job_run_id.get("JobRunId"))
      status = status_detail.get("JobRun").get("JobRunState")
      return status
   except ClientError as e:
      raise Exception( "boto3 client error in run_glue_job_get_status: " + e.__str__())
   except Exception as e:
      raise Exception( "Unexpected error in run_glue_job_get_status: " + e.__str__())

#Get status 1st time
print(run_glue_job_get_status("run_s3_file_job"))
#Get status 2nd time after waiting
time.sleep(10)
print(run_glue_job_get_status("run_s3_file_job"))
の後に2回目のステータスを取得

出力

##Get status 1st time
Running
#Get status 2nd time after waiting
SUCCEEDED

  1. PythonでBoto3ライブラリを使用してGlueジョブを実行するにはどうすればよいですか?

    問題の説明 − Pythonでboto3ライブラリを使用して、接着ジョブを実行します。たとえば、ジョブrun_s3_file_jobを実行します。 この問題を解決するためのアプローチ/アルゴリズム ステップ1 −例外を処理するためにboto3およびbotocore例外をインポートします。 ステップ2 − job_nameは必須パラメーターであり、argumentsは関数のオプションパラメーターです。実行するために引数を取るジョブはほとんどありません。その場合、引数はdictとして渡すことができます。 例:arguments ={‘arguments1’ =‘value1’、‘argume

  2. Boto3を使用して接着剤ジョブが存在するかどうかを確認するにはどうすればよいですか?

    問題の説明 − Pythonでboto3ライブラリを使用して、接着ジョブが存在するかどうかを確認します。たとえば、 run_s3_file_jobかどうかを確認します AWSグルーに存在するかどうか。 この問題を解決するためのアプローチ/アルゴリズム ステップ1 −例外を処理するためにboto3およびbotocore例外をインポートします。 ステップ2 −job_nameは関数内のパラメーターです。 ステップ3 −boto3ライブラリを使用してAWSセッションを作成します。 region_nameを確認してください デフォルトのプロファイルに記載されています。言及されていない場合は、