Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

한 번에 모든 Glue 작업의 정의를 얻기 위해 Boto3를 사용하는 방법은 무엇입니까?

<시간/>

문제 설명 − Python의 boto3 라이브러리를 사용하여 사용자의 AWS Glue 데이터 카탈로그에 있는 모든 글루 작업의 정의를 얻습니다.

− AWS Glue 데이터 카탈로그에 있는 모든 글루 작업의 정의를 가져옵니다.

이 문제를 해결하기 위한 접근 방식/알고리즘

1단계 − boto3 및 botocore 예외를 가져와 예외를 처리합니다.

2단계 − 이 기능에는 매개변수가 필요하지 않습니다. 사용자 계정에 대해 나열된 모든 작업의 ​​정의를 가져옵니다.

3단계 − boto3 라이브러리를 사용하여 AWS 세션을 생성합니다. region_name을(를) 확인하십시오. 기본 프로필에 언급되어 있습니다. 언급되지 않은 경우 region_name을 명시적으로 전달합니다. 세션을 만드는 동안.

4단계 − 글루용 AWS 클라이언트를 생성합니다.

5단계 − 이제 get_jobs 함수를 사용하여 사용자 계정에 나열된 모든 작업의 ​​정의를 가져옵니다. list_jobs에는 차이가 있습니다. 및 get_jobs . 목록_작업 get_jobs 동안 AWS Glue 데이터 카탈로그에 있는 글루 작업의 이름만 가져옵니다. 각 작업의 정의를 검색합니다.

6단계 − 각 작업의 정의를 반환합니다.

7단계 − 작업을 확인하는 동안 문제가 발생한 경우 일반 예외를 처리합니다.

예시

다음 코드를 사용하여 사용자 계정에 나열된 각 작업의 정의를 가져옵니다 -

botocore.exceptions에서 boto3 가져오기 import ClientErrordef get_definition_of_glue_jobs():session =boto3.session.Session() glue_client =session.client('glue') try:response =glue_client.get_jobs() e:raise로 ClientError를 제외한 응답을 반환 Exception("get_definition_of_glue_jobs의 boto3 클라이언트 오류:" + e.__str__()) 예외 e:raise Exception("get_definition_of_glue_jobs의 예기치 않은 오류:" + e.__str__())print(get_definition_of_glue_jobs())
출력
{'작업':[{'이름':'01_PythonShellTest1', '역할':'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, tz =tzlocal()), '실행 속성':{'MaxConcurrentRuns':1}, '명령':{'이름':'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 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},'Command ':{'이름':'파이썬 지옥', 'ScriptLocation':'s3://ivz-dev-dsstaging-work/ /test_14012021/01_pythonSHELL_14012021_123.py','PythonVersion':'3'}, 'DefaultArguments':{'--option-job-bookmark- ':'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()), '실행 속성':{' 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', '콘텐츠 길이':'8258', '연결':'연결 유지', 'xamzn-requestid':'287ad828-**************** *af'}, 'RetryAttempts':0}}