2017-02-23 39 views
9

我試圖在Amazon AWS PHP SDK v3的兩個不同區域的兩個存儲桶之間複製Amazon AWS S3對象。這將是一次性的過程,所以我不需要cross-region replication。試圖使用copyObject(),但沒有辦法指定該地區。如何使用Amazon AWS PHP SDK在區域之間複製S3對象?

$s3->copyObject(array(
    'Bucket'  => $targetBucket, 
    'Key'  => $targetKeyname, 
    'CopySource' => "{$sourceBucket}/{$sourceKeyname}", 
)); 

來源: http://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectUsingPHP.html

回答

6

你並不需要爲操作指定的區域。它會找出目標桶的區域並複製它。

但是,您可能是對的,因爲在AWS CLI上存在PHP SDK上不存在的源區域和目標區域屬性。因此,您可以完成如下任務:

  1. 在源區域中創建臨時存儲區。
  2. 在目標區域創建存儲桶。
  3. 配置從臨時存儲區到目標存儲區的複製。
  4. 在臨時存儲桶set expiration rule上,所以文件將在短暫時間後從臨時存儲桶中自動刪除。
  5. 使用PHP SDK將源存儲桶中的對象複製到臨時存儲桶中。
  6. 所有的對象也將被複制到另一個區域。
  7. 您可以在一天後移除臨時存儲桶。

或者只使用CLI和使用一個命令:

aws s3 cp s3://my-source-bucket-in-us-west-2/ s3://my-target-bucket-in-us-east-1/ --recursive --source-region us-west-2 --region us-east-1 
2

不同區域水桶也可以是不同的帳戶。其他人一直在做的是從一個存儲桶中複製並臨時保存數據,然後使用不同的憑據上傳到不同的存儲桶。 (如果您有兩個具有不同憑證的區域存儲桶)。

CLI工具的最新更新允許您從一個桶到另一個桶進行復制,如果它在同一個帳戶下。使用類似提到的東西Çağatay Gürtürk

相關問題