复制S3 Bucket包括版本

ber*_*ing 8 copy version amazon-s3 amazon-web-services

有没有办法复制包含对象版本的S3存储桶?

我读到一种复制存储桶的方法是使用命令行工具

aws s3 sync s3://<source> s3://<dest>
Run Code Online (Sandbox Code Playgroud)

但是,在源桶中,我有:

在此输入图像描述

在同步桶中我有:

在此输入图像描述

如您所见,版本ID为"null".有没有办法制作100%完全相同的副本,包括版本ID?这对我们的备份/开发服务器很重要,因为我们的应用程序依赖于版本ID.编辑:如果我在同步之前打开版本控制我得到的版本ID与null不同.但是版本ID与原始版本中的版本不同,目标是保留版本ID.我也尝试了cp命令,它产生了相同的结果.上述结果也记录在这里:

如果在目标存储桶上启用版本控制,Amazon S3会为要复制的对象生成唯一的版本ID.此版本ID与源对象的版本ID不同.Amazon S3在响应中的x-amz-version-id响应标头中返回复制对象的版本ID.

如果您未在目标存储桶上启用版本控制或挂起,则Amazon S3生成的版本ID始终为null.

所以看起来aws没有提供保存版本ID的方法?如果是这样,是否有解决方法或第三方软件?

Ash*_*osh 1

  1. 不,您无法获得相同的版本 ID,因为它们与存储桶名称一样是唯一的。这意味着没有第三方工具可以编辑并为您提供相同的版本 ID,即使您保留它也是如此。AWS 分配版本 ID,并且无法通过 API 更改。

  2. 如果新存储桶上未启用版本控制,则对象版本 ID 将报告为NULL。正如你所提到的,这是正确的。您可以做的就是存储旧版本 id 和新版本 id 并将其视为别名。

以下是AWS 文档对此的解释:

您必须在存储桶上显式启用版本控制。默认情况下,版本控制处于禁用状态。无论您是否启用版本控制,存储桶中的每个对象都有一个版本 ID。如果您尚未启用版本控制,Amazon S3 会将版本 ID 的值设置为 null。如果您已启用版本控制,Amazon S3 会为对象分配唯一的版本 ID 值。当您在存储桶上启用版本控制时,存储桶中已存储的对象不会发生变化。版本 ID(空)、内容和权限保持不变。

启用和暂停版本控制是在存储桶级别完成的。当您为存储桶启用版本控制时,添加到该存储桶的所有对象都将具有唯一的版本 ID。唯一版本 ID 是随机生成的、Unicode、UTF-8 编码、URL 就绪、不透明字符串,长度最多为 1024 字节。示例版本 ID 是3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo. 只有 Amazon S3 生成版本 ID。它们无法被编辑。