Python
 Computer >> コンピューター >  >> プログラミング >> Python

AWSリソースに存在するS3からオブジェクトのすべてのバージョンのリストを取得する方法


この記事では、AWSリソースに存在するS3からオブジェクトのすべてのバージョンのリストを取得する方法を説明します。

test.zipのすべてのバージョンを一覧表示します Bucket_1 / testfolderから S3の。

問題の説明: boto3を使用する S3からオブジェクトのすべてのバージョンのリストを取得するPythonのライブラリ。

この問題を解決するためのアプローチ/アルゴリズム

  • ステップ1: boto3をインポートします およびbotocore 例外を処理するための例外。

  • ステップ2: バケット名は必須パラメーターです。

  • ステップ3: boto3 libを使用してAWSセッションを作成します

  • ステップ4: s3用のAWSクライアントを作成する

  • ステップ5: 次に、関数 list_object_versions を使用して、指定されたバケットのオブジェクトのすべてのバージョンを一覧表示します。 例外がある場合はそれを処理します。

  • ステップ6: 上記の関数の結果は辞書であり、指定されたバケット内のオブジェクトのすべてのバージョンが含まれています。

  • ステップ7: オブジェクトのすべてのバージョンのリストを返します。

サンプルコード

次のコードを使用して、AWSS3からオブジェクトのすべてのバージョンのリストを取得します-

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"))

出力

{'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'}

  1. Python –文字列からすべての数字を抽出する方法

    数字で文字列を抽出する必要がある場合は、リスト内包表記と「isdigit」メソッドが使用されます。 例 以下は同じのデモンストレーションです- my_string = "python is 12 fun 2 learn" print("The string is : ") print(my_string) my_result = [int(i) for i in my_string.split() if i.isdigit()] print("The numbers list is :") print(my_result) 出

  2. Matplotlibのプロットからすべての凡例を取得するにはどうすればよいですか?

    matplotlibのプロットからすべての凡例を取得するには、 get_children()を使用できます。 軸のすべてのプロパティを取得し、すべてのプロパティを反復するメソッド。アイテムが凡例のインスタンスである場合は、凡例のテキストを取得します。 ステップ 図のサイズを設定し、サブプロット間およびサブプロットの周囲のパディングを調整します。 numpyを使用してx個のデータポイントを作成します。 図とサブプロットのセットを作成します。 sin(x)をプロットします およびcos(x) plot()を使用する ラベルと色が異なる方法。 軸の子を取得し、凡例の