9

我正在尝试使用 Amazon AWS PHP SDK v3 在两个不同区域的两个存储桶之间复制 Amazon AWS S3 对象。这将是一个一次性的过程,所以我不需要cross-region replication. 尝试使用copyObject()但没有办法指定区域。

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

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

4

2 回答 2

6

您无需为该操作指定区域。它将找出目标存储桶的区域并复制它。

但您可能是对的,因为在 AWS CLI 上存在 PHP SDK 中不存在的源区域和目标区域属性。所以你可以完成这样的任务:

  1. 在源区域中创建一个临时存储桶。
  2. 在目标区域创建存储桶。
  3. 配置从临时存储桶到目标存储桶的复制。
  4. 在临时存储桶上设置过期规则,因此文件将在短时间内自动从临时存储桶中删除。
  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
于 2017-02-26T14:32:27.377 回答
2

不同的区域桶也可以是不同的帐户。其他人一直在做的是从一个存储桶中复制并在本地临时保存数据,然后使用不同的凭据上传到不同的存储桶。(如果您有两个具有不同凭据的区域存储桶)。

CLI 工具的最新更新允许您从存储桶复制到存储桶(如果它位于同一帐户下)。使用类似Çağatay Gürtürk提到的东西。

于 2017-03-03T20:02:35.167 回答