python boto3を使用してs3バケット内のファイルの名前を変更しようとしていますが、引数を明確に理解できませんでした。ここで誰か助けてもらえますか?
私が計画しているのは、オブジェクトを新しいオブジェクトにコピーしてから、実際のオブジェクトを削除することです。
ここでも同様の質問を見つけましたが、boto3を使用したソリューションが必要です。
別の解決策を見つけました
s3 = boto3.resource('s3')
s3.Object('my_bucket','new_file_key').copy_from(CopySource='my_bucket/old_file_key')
s3.Object('my_bucket','old_file_key').delete()
S3でオブジェクトの名前を変更することはできません。したがって、指定したように、オブジェクトを新しい名前にコピーしてから古い名前を削除する必要があります。
client.copy_object(Bucket="BucketName", CopySource="BucketName/OriginalName", Key="NewName")
client.delete_object(Bucket="BucketName", Key="OriginalName")
copy() メソッドの更新されたBoto3ドキュメントの例を次に示します。これはcopy_object()でも機能し、現在必要な構文であるように見えます。
copy_source = {'Bucket': 'source__bucket', 'Key': 'my_folder/my_file'}
s3.copy_object(CopySource = copy_source, Bucket = 'dest_bucket', Key = 'new_folder/my_file')
s3.delete_object(Bucket = 'source_bucket', Key = 'my_folder/my_file')
上記のリンクのドキュメントからの注意:
CopySource(dict)-ソースバケットの名前、ソースオブジェクトのキー名、およびソースオブジェクトのオプションのバージョンID。辞書の形式は次のとおりです。{'Bucket': 'bucket'、 'Key': 'key'、 'VersionId': 'id'}。 VersionIdキーはオプションであり、省略できます。