如何使用 Amazon AWS PHP SDK 在区域之间复制 S3 对象?
How to copy S3 objects between regions with Amazon 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}",
));
来源:
http://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectUsingPHP.html
您不需要为该操作指定区域。它会找出目标桶的区域并复制它。
但您可能是对的,因为在 AWS CLI 上有 PHP SDK 上不存在的源区域和目标区域属性。所以你可以这样完成任务:
- 在源区域中创建一个临时存储桶。
- 在目标区域创建存储桶。
- 配置从临时存储桶到目标存储桶的复制。
- 在临时存储桶 set expiration rule 上,因此文件将在短时间后自动从临时存储桶中删除。
- 使用 PHP SDK 将对象从源存储桶复制到临时存储桶。
- 您的所有对象也将被复制到另一个区域。
- 您可以在一天后删除临时存储桶。
或者只使用 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
不同地区的桶也可以是不同的账号。其他人一直在做的是从一个存储桶中复制并在本地临时保存数据,然后使用不同的凭据上传到不同的存储桶。 (如果您有两个具有不同凭据的区域存储桶)。
CLI 工具的最新更新允许您在同一个帐户下从一个存储桶复制到另一个存储桶。使用类似 Çağatay Gürtürk 提到的内容。
我正在尝试使用 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
您不需要为该操作指定区域。它会找出目标桶的区域并复制它。
但您可能是对的,因为在 AWS CLI 上有 PHP SDK 上不存在的源区域和目标区域属性。所以你可以这样完成任务:
- 在源区域中创建一个临时存储桶。
- 在目标区域创建存储桶。
- 配置从临时存储桶到目标存储桶的复制。
- 在临时存储桶 set expiration rule 上,因此文件将在短时间后自动从临时存储桶中删除。
- 使用 PHP SDK 将对象从源存储桶复制到临时存储桶。
- 您的所有对象也将被复制到另一个区域。
- 您可以在一天后删除临时存储桶。
或者只使用 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
不同地区的桶也可以是不同的账号。其他人一直在做的是从一个存储桶中复制并在本地临时保存数据,然后使用不同的凭据上传到不同的存储桶。 (如果您有两个具有不同凭据的区域存储桶)。
CLI 工具的最新更新允许您在同一个帐户下从一个存储桶复制到另一个存储桶。使用类似 Çağatay Gürtürk 提到的内容。