17

S3 バケットのキーにファイルが含まれています。同じファイルを含む新しいキーを作成したいと考えています。そのファイルをダウンロードせずに行うことは可能ですか? Python (できれば boto ライブラリ) で解決策を探しています。

4

6 に答える 6

15

バケットは宛先バケットです。

bucket.copy_key(new_key,source_bucket,source_key)
于 2010-03-10T15:13:01.017 に答える
10
from boto.s3.key import Key

#Get source key from bucket by name
source_key = source_bucket.get_key(source_key_name)

#Copy source key to a new bucket with a new key name (can be the same as source)
#Note: source_key is Key
source_key.copy(dest_bucket_name,dest_key_name)

#The signature of boto's Key class:
def copy(self, dst_bucket, dst_key, metadata=None,
             reduced_redundancy=False, preserve_acl=False,
             encrypt_key=False, validate_dst_bucket=True)

#set preserve_acl=True to copy the acl from the source key
于 2014-02-02T22:18:26.877 に答える
4

boto のソース コードを参照すると、Key オブジェクトに「コピー」メソッドがあることがわかりました。CopyObject 操作についてご提案いただきありがとうございます。

于 2009-09-23T13:53:09.663 に答える
2

S3 では、オブジェクトごとのコピーが可能です。CopyObject オペレーションは、ソース オブジェクトのキーとバケット、およびターゲット デスティネーションのキーとバケットを指定すると、オブジェクトのコピーを作成します。boto にコンパクトな実装があるかどうかはわかりません。

于 2009-09-23T13:24:33.800 に答える
2

誰も尋ねませんでしたが、これを行う方法を示すことが適切かもしれないと思いましたsimples3:

>>> b.copy("my_bucket/file.txt", "file_copy.txt", acl="public")

ここで Boto が何をするかはわかりませんが、権限 (ACL) はS3 によってコピーされず、他に何も指定されていない場合は「プライベート」にリセットされることに注意してください。ACL をコピーするには、最初に要求する必要があります。

于 2011-02-11T13:33:46.857 に答える
0

Key オブジェクトの「copy」メソッドには、ソースの ACL を宛先オブジェクトにコピーする「preserve_acl」パラメーター (デフォルトでは False) があることに注意してください。

于 2011-09-09T19:24:44.570 に答える