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

Làm thế nào để sử dụng Boto3 để kiểm tra một Công việc Keo có tồn tại hay không?

Tuyên bố sự cố - Sử dụng thư viện boto3 trong Python để kiểm tra xem có tồn tại lệnh dán hay không. Ví dụ:kiểm tra xem run_s3_file_job có tồn tại trong keo AWS hay không.

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à các tham số trong hàm.

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 get_job và chuyển JobName .

Bước 6 - Nếu công việc tồn tại, phản hồi sẽ chứa tất cả thông tin chi tiết về công việc, nếu không nó sẽ đưa ra một ngoại lệ.

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 để kiểm tra xem công việc dán keo có tồn tại hay không -

import boto3
from botocore.exceptions import ClientError

def check_glue_job_exists(job_name):
   session = boto3.session.Session()
   glue_client = session.client('glue')
   try:
      response = glue_client.get_job(JobName=job_name)
   return response
   except ClientError as e:
      raise Exception( "boto3 client error in check_glue_job_exists: " + e.__str__())
   except Exception as e:
      raise Exception( "Unexpected error in check_glue_job_exists: " + e.__str__())

#To check existing job
print(check_glue_job_exists("run_s3_file_job"))
#Job doesn’t exist
print(check_glue_job_exists("run_s3_file_job_not_exist"))

Đầu ra

#To check existing job
{'Job': {'Name': 'run_s3_file_job', 'Description': 'Glue job for the
test', 'Role': 'arn:aws:iam::12345:role/delegated/glue-service-role',
'CreatedOn': datetime.datetime(2021, 02, 10, 15, 7, 3, 638000,
tzinfo=tzlocal()), 'LastModifiedOn': datetime.datetime(2021, 02, 10, 15,
7, 3, 638000, tzinfo=tzlocal()), 'ExecutionProperty':
{'MaxConcurrentRuns': 1}, 'Command': {'Name': 'glueetl',
'ScriptLocation': 's3://test/pipeline.py', 'PythonVersion': '3'},
'DefaultArguments': { '--job-language': 'python', 'Step': '0'},
'MaxRetries': 0, 'AllocatedCapacity': 4, 'Timeout': 2880, 'MaxCapacity':
4.0, 'WorkerType': 'G.1X', 'NumberOfWorkers': 4, 'GlueVersion': '2.0'},
'ResponseMetadata': {'RequestId': 'e3ec9e2c-e75d-4443-bfeafef674fff7e9', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sat, 13
Feb 2021 13:20:27 GMT', 'content-type': 'application/x-amz-json-1.1',
'content-length': '1501', 'connection': 'keep-alive', 'x-amznrequestid': 'e3ec9e2c-e75d-4443-bfea-fef674fff7e9'}, 'RetryAttempts':
0}}

#Job doesn’t exist
botocore.errorfactory.EntityNotFoundException: An error occurred
(EntityNotFoundException) when calling the GetJob operation: Job with
name: run_s3_file_job_not_exist not found.