【问题标题】:How to copy S3 objects between regions with Amazon AWS PHP SDK?如何使用 Amazon AWS PHP SDK 在区域之间复制 S3 对象?
【发布时间】:2017-07-13 19:57:34
【问题描述】:

我正在尝试使用 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

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-php-sdk


    【解决方案1】:

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

    但您可能是对的,因为在 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 提到的内容。

      【讨论】:

        猜你喜欢
        • 2014-10-08
        • 2016-02-23
        • 1970-01-01
        • 2017-02-04
        • 2016-11-05
        • 1970-01-01
        • 1970-01-01
        • 2021-09-26
        • 1970-01-01
        相关资源
        最近更新 更多