Computer >> Máy Tính >  >> Lập trình >> Python

Làm thế nào để sử dụng Boto3 để có được định nghĩa của tất cả các công việc Keo tại một thời điểm?

Tuyên bố sự cố - Sử dụng thư viện boto3 bằng Python để nhận định nghĩa của tất cả các lệnh dán có trong danh mục Dữ liệu keo AWS của người dùng.

Ví dụ - Nhận định nghĩa của tất cả các công việc keo có trong danh mục Dữ liệu keo AWS.

Phương pháp tiếp cận / Thuật toán để giải quyết vấn đề này

Bước 1 - Nhập các ngoại lệ boto3 và botocore để xử lý các ngoại lệ.

Bước 2 - Không cần tham số cho chức năng này. Nó sẽ tìm nạp định nghĩa của tất cả các công việc được liệt kê cho tài khoản người dùng.

Bước 3 - Tạo phiên AWS bằng thư viện boto3. Đảm bảo rằng region_name được đề cập trong hồ sơ mặc định. Nếu nó không được đề cập, thì hãy chuyển region_name một cách rõ ràng trong khi tạo phiên.

Bước 4 - Tạo ứng dụng AWS cho keo dán.

Bước 5 - Bây giờ sử dụng hàm get_jobs để nhận định nghĩa của tất cả các công việc được liệt kê trong tài khoản người dùng. Lưu ý rằng có sự khác biệt trong list_jobs get_jobs . List_jobs chỉ cần tìm nạp tên của các lệnh dán có trong danh mục Dữ liệu keo AWS trong khi get_jobs đọc lại định nghĩa của từng công việc.

Bước 6 - Nó trả về định nghĩa của từng công việc.

Bước 7 - Xử lý ngoại lệ chung nếu có sự cố xảy ra trong khi kiểm tra công việc.

Ví dụ

Sử dụng mã sau để tìm nạp định nghĩa của từng công việc được liệt kê trong tài khoản người dùng -

 import boto3from botocore.exceptions import ClientErrordef get_definition_of_glue_jobs ():session =boto3.session.Session () keo_client =session.client ('keo') try:response =keo_client.get_jobs () trả về phản hồi ngoại trừ ClientError as e:raise Exception ("lỗi máy khách boto3 trong get_definition_of_glue_jobs:" + e .__ str __ ()) ngoại trừ Exception as e:raise Exception ("Lỗi không mong muốn trong get_definition_of_glue_jobs:" + e .__ str __ ()) print (get_definition_of_glue_pre>jobs ()) 

Đầu ra

 {'Công việc':[{'Tên':'01_PythonShellTest1', 'Vai trò':'arn:aws:iam ::********:role / devedl-keo-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-keo-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}, 'Lệnh ':{' Tên ':' những con trăn 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 ' , 'Vai trò':'arn:aws:iam ::*********:role / devedl-qa-Automation-Keo-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},' Command ':{' Name ':' 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-keo-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/03/2021 05:23:30 GMT ',' content-type ':' application / xamz- json-1.1 ',' content-length ':' 8258 ',' connection ':' keep-living ',' xamzn-suggest ':' 287ad828 - **************** * af '},' RetryAttempts ':0}}