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

Làm cách nào để sử dụng thư viện Boto3 trong Python để xóa một đối tượng khỏi S3 bằng AWS Resource?

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