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

Boto3を使用して、一度にすべてのGlueジョブの定義を取得するにはどうすればよいですか?


問題の説明 − Pythonでboto3ライブラリを使用して、ユーザーのAWSGlueDataカタログに存在するすべてのglueジョブの定義を取得します。

− AWSGlueDataカタログに存在するすべての接着剤ジョブの定義を取得します。

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

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

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

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

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

ステップ5 − get_jobs関数を使用して、ユーザーアカウントにリストされているすべてのジョブの定義を取得します。 list_jobsには違いがあることに注意してください およびget_jobs List_jobs get_jobs 中に、AWSGlueDataカタログに存在するglueジョブの名前をフェッチするだけです。 各ジョブの定義を取得します。

ステップ6 −各ジョブの定義を返します。

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

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

 import boto3from botocore.exceptions import ClientErrordef get_definition_of_glue_jobs():session =boto3.session.Session()glue_client =session.client('glue')try:response =glue_client.get_jobs()はClientErrorを除いて応答を返しますe:raise Exception( "boto3 client error in get_definition_of_glue_jobs:" + e .__ str __())except Exception as e:raise Exception( "Unexpected error in get_definition_of_glue_jobs:" + e .__ str __())print(get_definition_of_glue_jobs())出力 
 {'Jobs':[{'Name': '01_PythonShellTest1'、'Role':'arn:aws:iam ::********:role / devedl-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:// ivz-dev-ds-staging- / 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 ::*********:role / dev-edl-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}、'コマンド':{'名前':' pythons hell'、' ScriptLocation':' s3://ivz-dev-dsstaging-work/ /test_14012021/01_pythonSHELL_14012021_123.py'、' PythonVersion':' 3'}、' DefaultArguments':{'--job-bookmark-option ':' jobbookmark-disable'}、' MaxRetries':0、' AllocatedCapacity':0、' Timeout':2880、' MaxCapacity':0.0625、' GlueVersion':' 1.0'}、{' Name':' GlueConnectionTest ' 、'ロール':'arn:aws:iam ::*********:role / devedl-qa-automation-glue-role'、'CreatedOn':datetime.datetime(2020、3、6、 16、27、3、862000、tzinfo =tzlocal())、'LastModifiedOn':datetime.datetime(2020、3、6、16、49、19、942000、tzinfo =tzlocal())、'ExecutionProperty':{' MaxConcurrentRuns':1}、'コマンド':{'名前':' pythonshell'、' ScriptLocation':' s3://glue-job-connection-testbucket/test.py'、' PythonVersion':' 3'}、 'DefaultArguments':{'--jobbookmark-option':'job-bookmark-disable'、'--job-language':'python'}、'Connections':{'Connections':['dev-edl-redshift -glue-connection'、' devedl-rds-glue-connection']}、' MaxRetries':0、' AllocatedCapacity':0、'Timeout':2880、' MaxCapacity': 0.0625、 'GlueVersion': '1.0'}] 'は、NextToken': 'eyJleHBpcmF0aW9uIjp7InNlY29uZHMiOjE2MTQ2NjI2MTAsIm5hbm9zIjo2MjEwMDAwMDB9LCJsYXN0RXZhbHVhdGVkS2V5Ijp7ImpvYk5hbWUiOnsicyI6InRpY2stZGF0YS10ZXN0In0sImFjY291bnRJZCI6eyJzIjoiNzgyMjU4NDg1ODQxIn0sImpvYklkIjp7InMiOiJqXzhmZDc2MzhkYTcyMGQ5Yzk1YTg4MTlkOTgxNTE5MDdjM2JmYWI3ZGYxNGUwNGExZGM0ZTIzZjViYjczM2M2ZTYifX19'、 'たResponseMetaData' { 'RequestId':「287ad828 - ******************* ******* af'、' HTTPStatusCode':200、' HTTPHeaders':{' date':' Mon、01 Mar 2021 05:23:30 GMT'、' content-type':' application / xamz- json-1.1'、' content-length':' 8258'、' connection':' keep-alive'、' xamzn-requestid':' 287ad828-**************** * af'}、' RetryAttempts':0}} 

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

    この記事では、特定のジョブ名のリストのリソースメタデータのリストを取得する方法を説明します。 問題の説明 − Pythonでboto3ライブラリを使用して、アカウントで利用可能なジョブを取得します。たとえば、アカウントで利用できるジョブの詳細を取得します。 この問題を解決するためのアプローチ/アルゴリズム ステップ1 −例外を処理するためにboto3およびbotocore例外をインポートします。 ステップ2 −この関数にはパラメータは必要ありません。リストされているすべてのジョブをユーザーアカウントに取得し、各ジョブのメタデータを表示します。 ステップ3 −boto3ライブラリを使用し

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

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