AWS S3 CopyObject版本

时间:2013-12-09 10:10:09

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

我正在尝试通过创建旧对象版本的副本来实现“恢复”对象。

我正在使用AWS PHP SDK 2,方法copyObject,但我找不到指定源对象的versionID的方法。

AWS REST API文档(ref)提及

  

要复制其他版本,请使用versionId子资源。

但SDK文档中未提及。

我尝试将versionID添加到“CopySource”属性,SDK文档说它是

  

源对象的名称和源对象的键名称,用斜杠(/)

分隔

但它不起作用。

$param = array(
  'Bucket' => $this->bucket,
  'CopySource' => urlencode($this->bucket . $this->delimiter . $source_key . $this->delimiter . $source_version_id),
  'Key' => $dest_key
);
$result = $this->s3Client->copyObject($param);

问题

如何指定源对象的versionID?

1 个答案:

答案 0 :(得分:4)

感谢AWS Discussion forum,我找到了答案。 正确的参数设置是

$param = array(
  'Bucket' => $this->bucket,
  'CopySource' => urlencode($this->bucket . $this->delimiter . $source_key) . '?versionId=' . $source_version_id,
  'Key' => $dest_key
);