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.