如何使用Amazon AWS PHP SDK在区域之间复制S3对象?

bar*_*art 9 amazon-s3 amazon-web-services aws-php-sdk

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

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

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

Çağ*_*ürk 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
Run Code Online (Sandbox Code Playgroud)