答案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 的范围限定于对象键级别且仅在该级别有意义的情况下进行。