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

Làm cách nào để sử dụng Boto3 để nhận quy trình công việc được tạo trong tài khoản của bạn?

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 tất cả các trình kích hoạt được liệt kê cho tài khoản người dùng và sau đó hiển thị siêu dữ liệu của từng trình kích hoạt.

Bước 3 - Tạo phiên AWS bằng thư viện boto3. Đảm bảo rằng tên miền được đề cập trong hồ sơ mặc định. Nếu nó không được đề cập, thì hãy chuyển rõ ràng region_name 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 list_workflows để nhận tất cả các công việc được liệt kê trong tài khoản người dùng.

Bước 6 - Gọi batch_get_workflows và chuyển các tên công việc được tìm nạp trong chức năng trước đó.

Bước 7 - Nó trả về list_of_workflows và siêu dữ liệu của từng quy trình công việc.

Bước 8 - 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 chi tiết của từng dòng công việc được tạo trong tài khoản người dùng -

import boto3
from botocore.exceptions import ClientError

def get_resource_maetadata_of_workflows():
   session = boto3.session.Session()
   glue_client = session.client('glue')
   try:
      list_of_workflows = glue_client.list_workflows()
      response = glue_client.batch_get_workflows( Names=list_of_workflows['Workflows'])

      return list_of_workflows, response
   except ClientError as e:
      raise Exception( "boto3 client error in get_resource_maetadata_of_workflows: " + e.__str__())
   except Exception as e:
      raise Exception( "Unexpected error in get_resource_maetadata_of_workflows: " + e.__str__())

a, b = get_resource_maetadata_of_workflows()
#List of Workflows
print(a)
#Resource metadata of each Workflow
print(b)

Đầu ra

#List of Workflows
{'Workflows': ['dev-aiml-naviga-ods-load'], 'ResponseMetadata':
{'RequestId': '556890ce-bcd1-4bb0-9c33-3ae1db13f3a9', 'HTTPStatusCode':
200, 'HTTPHeaders': {'date': 'Sat, 27 Feb 2021 13:57:37 GMT', 'contenttype': 'application/x-amz-json-1.1', 'content-length': '91',
'connection': 'keep-alive', 'x-amzn-requestid': '556890ce-bcd1-4bb0-
9c33-3ae1db13f3a9'}, 'RetryAttempts': 0}}
#Resource metadata of each Workflow
{'Workflows': [{'Name': 'dev-aiml-naviga-ods-load',
'DefaultRunProperties': {}, 'CreatedOn': datetime.datetime(2020, 5, 27,
3, 10, 57, 967000, tzinfo=tzlocal()), 'LastModifiedOn':
datetime.datetime(2020, 5, 27, 3, 10, 57, 967000, tzinfo=tzlocal())},
'StartedOn': datetime.datetime(2021, 2, 3, 16, 14, 48, 795000,
tzinfo=tzlocal()), 'CompletedOn': datetime.datetime(2021, 2, 3, 16, 28,
6, 207000, tzinfo=tzlocal()), 'Status': 'COMPLETED', 'Statistics':
{'TotalActions': 3, 'TimeoutActions': 0, 'FailedActions': 0,
'StoppedActions': 0, 'SucceededActions': 3, 'RunningActions': 0}}},
'MissingWorkflows': [], 'ResponseMetadata': {'RequestId': 'b328d064-
24ab-48c4-b058-852387a3d474', 'HTTPStatusCode': 200, 'HTTPHeaders':
{'date': 'Sat, 27 Feb 2021 13:57:37 GMT', 'content-type':
'application/x-amz-json-1.1', 'content-length': '2655', 'connection':
'keep-alive', 'x-amzn-requestid': 'b328d064-24ab-48c4-b058-
852387a3d474'}, 'RetryAttempts': 0}}