AWS S3 CopyObject 版本

Ras*_*ric 3 php amazon-s3 amazon-web-services

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

我正在使用 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);
Run Code Online (Sandbox Code Playgroud)

如何指定源对象的 versionID?

Ras*_*ric 5

感谢AWS 讨论论坛,我找到了答案。正确的参数设置是

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