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

Boto3を使用して一度に複数の接着剤ジョブの詳細を取得するにはどうすればよいですか?


この記事では、特定のジョブ名のリストのリソースメタデータのリストを取得する方法を説明します。

問題の説明 − Pythonでboto3ライブラリを使用して、アカウントで利用可能なジョブを取得します。たとえば、アカウントで利用できるジョブの詳細を取得します。

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

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

ステップ2 −この関数にはパラメータは必要ありません。リストされているすべてのジョブをユーザーアカウントに取得し、各ジョブのメタデータを表示します。

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

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

ステップ5 −ここで、list_jobs関数を使用して、ユーザーアカウントにリストされているすべてのジョブを取得します。

ステップ6 batch_get_jobsを呼び出す 前の関数でフェッチしたジョブ名を渡します。

ステップ7 list_of_jobsを返します および各ジョブのメタデータ。

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

次のコードを使用して、ユーザーアカウントにリストされている各ジョブの詳細を取得します-

import boto3
from botocore.exceptions import ClientError

def get_resource_maetadata_of_glue_jobs():
   session = boto3.session.Session()
   glue_client = session.client('glue')
   try:
      list_of_jobs = glue_client.list_jobs()
      response = glue_client.batch_get_jobs(JobNames=list_of_jobs['JobNames'])

      return list_of_jobs, response
   except ClientError as e:
      raise Exception( "boto3 client error in get_resource_maetadata_of_glue_jobs: " + e.__str__())
   except Exception as e:
      raise Exception( "Unexpected error in get_resource_maetadata_of_glue_jobs: " + e.__str__())

a, b = get_resource_metadat_of_glue_jobs()
#List of Jobs
print(a)
#Resource metadata of each job
print(b)

出力

ジョブの
#List of Jobs
{'JobNames': ['01_PythonShellTest1', '01_pythonSHELL_14012021'],
'NextToken':
'eyJleHBpcmF0aW9uIjp7InNlY29uZHMiOjE2MTQxNzE2OTksIm5hbm9zIjo1MTYwMDAwMDB
9LCJsYXN0RXZhbHV
zFiMzAzNzAxMzRmNDk3NWM3M2MyMjhjYTk5MDgzZTA3YjQ0ZWEyOTZlIn19fQ==',
'ResponseMetadata': {'RequestId': '5d3eb19a-41f5-b24e-2d59ed9664b5',
'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Tue, 23 Feb 2021
13:01:39 GMT', 'content-type': 'application/x-amz-json-1.1', 'contentlength': '1134', 'connection': 'keep-alive', 'x-amzn-requestid':
'5d3eb19a-41f5-b24e-2d59ed9664b5'}, 'RetryAttempts': 0}}

#Resource metadata of each job
{'Jobs': [{'Name': '01_PythonShellTest1', 'Role':
'arn:aws:iam::1234:role/dev-edl-glue-role', 'CreatedOn':
datetime.datetime(2021, 1, 6, 19, 59, 19, 387000, tzinfo=tzlocal()),
'LastModifiedOn': datetime.datetime(2021, 2, 9, 21, 47, 31, 614000,
tzinfo=tzlocal()), 'ExecutionProperty': {'MaxConcurrentRuns': 1},
'Command': {'Name': 'pythonshell', 'ScriptLocation':
's3://test/01_pythonShellTest/test1/01_PythonShellTest1.py',
'PythonVersion': '3'}, 'DefaultArguments': {'--job-bookmark-option':
'job-bookmark-disable', '--job-language': 'python'}, 'MaxRetries': 0,
'AllocatedCapacity': 0, 'Timeout': 2880, 'MaxCapacity': 0.0625,
'GlueVersion': '1.0'},
{'Name': '01_pythonSHELL_14012021', 'Role': 'arn:aws:iam::1234:role/devedl-glue-role', 'CreatedOn': datetime.datetime(2021, 1, 14, 20, 22, 40,
965000, tzinfo=tzlocal()), 'LastModifiedOn': datetime.datetime(2021, 1,
14, 20, 22, 40, 965000, tzinfo=tzlocal()), 'ExecutionProperty':
{'MaxConcurrentRuns': 1}, 'Command': {'Name': 'pythonshell',
'ScriptLocation': 's3://test/01_pythonSHELL_14012021_123.py',
'PythonVersion': '3'}, 'DefaultArguments': {'--job-bookmark-option':
'job-bookmark-disable'}, 'MaxRetries': 0, 'AllocatedCapacity': 0,
'Timeout': 2880, 'MaxCapacity': 0.0625, 'GlueVersion': '1.0'}]}


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

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

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

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