이 기사에서는 주어진 작업 이름 목록에 대한 리소스 메타데이터 목록을 가져오는 방법을 살펴보겠습니다.
문제 설명 − 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'}]}