amazon s3 中对象的版本 ID 对于文件、存储桶还是 S3 是唯一的?

amazon s3 中对象的版本 ID 对于文件、存储桶还是 S3 是唯一的?

文档

如果您为存储桶启用版本控制,Amazon S3 会自动为正在存储的对象生成唯一的版本 ID

当为存储桶启用版本控制时,我可以说版本号返回的内容对于存储桶中的所有文件都是唯一的吗?

我无法从他们的文档中获取足够的细节。我是否遗漏了什么?

我担心的是亚马逊

存储桶中可存储的对象数量没有限制,无论使用多个存储桶还是仅使用几个存储桶,性能都没有差异

版本号的长度为32。

版本 ID 的长度为 32

因此它可以生成最多 2^32 个 id,即4,29,49,67,296是吧?那么,存储桶中可创建的对象数量有限制吗?

提前致谢。

答案1

从技术角度上讲,未来它们可能会更长:

唯一版本 ID 是随机生成的,Unicode、UTF-8 编码、URL 就绪、不透明字符串,长度最多为 1024 字节

http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectVersioning.html

然而,似乎没有关于这些标识符的范围的明确说明。

存储桶版本控制文档(现在)包括以下声明:

当您为存储桶启用版本控制时,添加到其中的所有对象都将具有唯一的版本 ID。

假设这是正确的,版本 ID 的范围是存储桶...但我仍然持怀疑态度。出于性能原因,S3 有时会对存储桶执行索引分区拆分,并且跨分区维护唯一的版本 ID 似乎不太可能。这实际上取决于版本 ID 中的信息实际上意味着什么,如果它有任何意义的话。它是不透明的,所以据我们所知,它可能是随机的。

从应用程序的角度来看,从最严格的意义上讲,它们仅对单个对象是唯一的,因为如果对象是在未受版本控制的存储桶中创建的,并且稍后在存储桶上启用版本控制,则在启用版本控制时存在的每个对象都具有相同的版本 ID,即null与 REST API 交互时的文字字符串。

但无论如何,如果没有附带的键,版本 ID 就没有意义,因为您不能仅通过版本 ID 来获取对象 - 只能通过键 + 版本 ID 来获取。

综合起来,适当的行动方案似乎是在假设版本 ID 的范围限定于对象键级别且仅在该级别有意义的情况下进行。

相关内容