2009-09-23 9 views

答えて

2

S3では、オブジェクトコピーによってオブジェクトを許可します。 CopyObject操作では、ソースオブジェクトのキーとバケット、およびターゲット先のキーとバケットを指定すると、オブジェクトのコピーが作成されます。 botoにコンパクトな実装があるかどうかは不明です。

4

botoのソースコードを参照すると、Keyオブジェクトに「コピー」メソッドがあることがわかりました。 CopyObject操作に関するご意見ありがとうございます。誰も尋ねませんが、私はsimples3でこれを行う方法を示すために、関連するかもしれないと思った

bucket.copy_key(new_key,source_bucket,source_key) 
+0

ヘルプ: 'コピー(自己、dst_bucket、dst_key、メタデータ=なし、reduced_redundancy =偽、偽= preserve_acl、ENCRYPT_KEY =偽)のbotoの'メソッド。 s3.key.Keyインスタンス この鍵を別のバケットにコピーします。 –

14

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

私はわからないんだけど何Botoはここにありますが、アクセス許可(ACL)がでないことに注意してください。はS3によってコピーされます。それ以外の指定がない場合は、「プライベート」にリセットされます。 ACLをコピーするには、まずACLを要求する必要があります。

+1

これは実際にキーを読み取り、それを新しいバケットに入れます。これはあなたが望むものではありません。ごめんなさい。 –

+0

これは正確だとは思わない。これは最高の答えIMOです。 'copy_key'メソッドはPUTリクエストに' x-amz-copy-source'ヘッダを渡します。これは、あなたのマシンにダウンロードすることなくS3が地域から地域に直接コピーするように指示します。 – sergiopereira

+0

ここにそれらがありますdocs:http://boto.cloudhackers.com/en/latest/ref/s3.html#boto.s3.bucket.Bucket.copy_key – creimers

2

:バケットは先のバケットである

+0

私はこのアクセス権に関するコメントを(バグが発生した後に) 'dest_bucket .copy_key(key.name、src_bucket_name、key.name、preserve_acl = True) ' – nsof

0

Keyオブジェクトの 'copy'メソッドには、送信元のACLを宛先オブジェクトにコピーする「preserve_acl」パラメータ(デフォルトではFalse)があります。モジュールboto.s3.keyのメソッドコピー上

9
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 
関連する問題