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

Làm thế nào để sử dụng thư viện Boto3 trong Python để chạy một Công việc Keo?

Tuyên bố sự cố - Sử dụng thư viện boto3 trong Python để chạy lệnh dán. Ví dụ:chạy công việc run_s3_file_job.

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 - job_name là tham số bắt buộc trong khi đối số là tham số tùy chọn trong hàm. Rất ít công việc cần tranh luận để điều hành. Trong trường hợp đó, các đối số có thể được chuyển dưới dạng dict.

Ví dụ:đối số ={‘đối số1’ =‘giá trị1’, ‘đối số đối số2’ =‘giá trị2’}

Nếu công việc không có đối số, thì chỉ cần chuyển job_name.

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 start_job_run và chuyển JobName và các đối số nếu được yêu cầu.

Bước 6 - Khi công việc bắt đầu, nó cung cấp cho job_run_id siêu dữ liệu của 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 để chạy lệnh dán hiện có -

import boto3
from botocore.exceptions import ClientError

def run_glue_job(job_name, arguments = {}):
   session = boto3.session.Session()
   glue_client = session.client('glue')
   try:
      job_run_id = glue_client.start_job_run(JobName=job_name, Arguments=arguments)
   return job_run_id
   except ClientError as e:
      raise Exception( "boto3 client error in run_glue_job: " + e.__str__())
   except Exception as e:
      raise Exception( "Unexpected error in run_glue_job: " + e.__str__())

print(run_glue_job("run_s3_file_job"))

Đầu ra

{'JobRunId':
'jr_5f8136286322ce5b7d0387e28df6742abc6f5e6892751431692ffd717f45fc00',
'ResponseMetadata': {'RequestId': '36c48542-a060-468b-83ccb067a540bc3c', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sat, 13
Feb 2021 13:36:50 GMT', 'content-type': 'application/x-amz-json-1.1',
'content-length': '82', 'connection': 'keep-alive', 'x-amzn-requestid':
'36c48542-a060-468b-83cc-b067a540bc3c'}, 'RetryAttempts': 0}}