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 { 'JobNames을'
#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'}]}