Trong bài viết này, chúng ta sẽ xem cách lấy danh sách siêu dữ liệu tài nguyên cho một danh sách tên công việc nhất định.
Tuyên bố sự cố - Sử dụng thư viện boto3 bằng Python để nhận các công việc có sẵn trong tài khoản của bạn. Ví dụ:lấy thông tin chi tiết về các công việc có sẵn 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 công việc đượ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 công việc.
Bước 3 - Tạo phiên AWS bằng thư viện boto3. Đảm bảo rằng tên_vùng đượ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 list_jobs để 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_jobs 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_jobs và siêu dữ liệu của từng 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 công việc được liệt kê trong tài khoản người dùng -
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)
Đầu ra
#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'}]}