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

Cách lấy danh sách tất cả các phiên bản của đối tượng từ S3 có trong Tài nguyên AWS

Trong bài viết này, chúng ta sẽ xem cách lấy danh sách tất cả các phiên bản của đối tượng từ S3 mà chúng có trong Tài nguyên AWS.

Ví dụ

Liệt kê tất cả các phiên bản của test.zip từ Bucket_1 / testfolder của S3.

Tuyên bố sự cố: Sử dụng boto3 thư viện bằng Python để nhận danh sách tất cả các phiên bản của đối tượng từ 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 boto3 botocore các ngoại lệ để xử lý các ngoại lệ.

  • Bước 2: bucket_name là tham số bắt buộc.

  • Bước 3: Tạo phiên AWS bằng boto3 lib

  • Bước 4: Tạo ứng dụng AWS cho s3

  • Bước 5: Bây giờ, liệt kê tất cả phiên bản của đối tượng của nhóm đã cho bằng cách sử dụng hàm list_object_versions và xử lý các ngoại lệ, nếu có.

  • Bước 6: Kết quả của hàm trên là một từ điển và chứa tất cả các phiên bản của đối tượng trong nhóm đã cho.

  • Bước 7: Trả lại danh sách tất cả các phiên bản của đối tượng.

Mã mẫu

Sử dụng mã sau để nhận danh sách tất cả các phiên bản của đối tượng từ AWS S3 -

import boto3
from botocore.exceptions import ClientError

def list_all_objects_version(bucket_name, prefix_name):  
   session = boto3.session.Session()
   s3_client = session.client('s3')
   try:
      result = s3_client.list_object_versions(Bucket=bucket_name, Prefix=prefix_name)
   except ClientError as e:
      raise Exception("boto3 client error in list_all_objects_version function: " + e.__str__())
   except Exception as e:
      raise Exception("Unexpected error in list_all_objects_version function of s3 helper: " + e.__str__())
print(list_all_objects_version("Bucket_1","testfolder"))

Đầu ra

{'ResponseMetadata': {'RequestId': 'H4VAGM3YP6', 'HostId': ***********', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amz-id-2': ***************', 'x-amz-request-id': 'H4VAGM3YP6', 'date': 'Sat, 03 Apr 2021 08:04:08 GMT', 'content-type': 'application/xml', 'transfer-encoding': 'chunked', 'server': 'AmazonS3'}, 'RetryAttempts': 0}, 'IsTruncated': False, 'KeyMarker': '', 'VersionIdMarker': '',
'Versions': [{'ETag': '"705e2e674b04ca71"', 'Size': 1773, 'StorageClass': 'STANDARD', 'Key': 'testfolder/test.zip', 'VersionId': 'null', 'IsLatest': True, 'LastModified': datetime.datetime(2020, 12, 18, 14, 13, 18, tzinfo=tzutc()), 'Owner': {'DisplayName': 'AWS.Development', 'ID': '928*******************************'}}], 'Name': 'Bucket_1', 'Prefix': 'testfolder', 'MaxKeys': 1000, 'EncodingType': 'url'}