Trong bài viết này, chúng ta sẽ xem cách xóa một đối tượng khỏi S3 bằng thư viện Boto 3 của Python.
Ví dụ - Xóa test.zip khỏi Bucket_1 / testfolder của S3
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 - s3_files_path là tham số trong hàm.
Bước 3 - Xác thực s3_files_path được chuyển ở định dạng AWS là s3:// bucket_name / key.
Bước 4 - Tạo phiên AWS bằng thư viện boto3.
Bước 5 - Tạo tài nguyên AWS cho S3.
Bước 6 - Tách đường dẫn S3 và thực hiện các thao tác để tách tên thùng gốc và đường dẫn đối tượng cần xóa.
Bước 7 - Bây giờ, sử dụng chức năng delete_object và chuyển tên nhóm và khóa cần xóa.
Bước 8 - Đối tượng cũng là một từ điển có tất cả các chi tiết của một tệp. Bây giờ, tìm nạp LastModified chi tiết của từng tệp và so sánh với dấu thời gian ngày đã cho.
Bước 9 - Xử lý ngoại lệ chung nếu có sự cố xảy ra khi xóa tệp.
Ví dụ
Sử dụng mã sau để xóa một đối tượng khỏi S3 -
import boto3 from botocore.exceptions import ClientError def delete_objects_from_s3(s3_files_path): if 's3://' not in s3_files_path: raise Exception('Given path is not a valid s3 path.') session = boto3.session.Session(profile_name='saml') s3_resource = session.resource('s3') s3_tokens = s3_files_path.split('/') bucket_name = s3_tokens[2] object_path = "" filename = s3_tokens[len(s3_tokens) - 1] print('bucket_name: ' + bucket_name) if len(s3_tokens) > 4: for tokn in range(3, len(s3_tokens) - 1): object_path += s3_tokens[tokn] + "/" object_path += filename else: object_path += filename print('object: ' + object_path) try: result = s3_resource.meta.client.delete_object(Bucket=bucket_name, Key=object_path) except ClientError as e: raise Exception( "boto3 client error in delete_objects_from_s3 function: " + e.__str__()) except Exception as e: raise Exception( "Unexpected error in delete_objects_from_s3 function of s3 helper: " + e.__str__()) #delete test.zip print(delete_objects_from_s3("s3://Bucket_1/testfolder/test.zip")
Đầu ra
bucket_name: Bucket_1 object: testfolder/test.zip