我有一个带有无版本对象的存储桶。然后我打开了版本控制,那些现有的对象没有versionId,只有新上传的对象才会。我想要的是能够为当前没有的每个对象生成一个versionId,而不必求助于复制到临时位置然后覆盖原始对象的变通方法。就额外的,版本化的存储而言,这将是昂贵的,并且复制那么多数据也只是耗费时间。有没有办法生成版本ID?
这是错误:
An error occurred (InvalidRequest) when calling the CopyObject operation: This copy request is illegal because it is trying to copy an object to itself without changing the object's metadata, storage class, website redirect location or encryption attributes.
答案 0 :(得分:2)
然后我打开版本控制,那些现有对象没有versionId,只有新上传的对象才会。
这不正确。在未版本化的存储桶上启用版本控制时,所有现有对象的版本ID都设置为4字节字符串null
。这不是“空”,而是“空”或“不存在”,而是实际字符串。
从您的角度来看,此值的行为与任何其他版本ID相同,因为版本ID没有意义(它们是不透明的字符串,而不是数字,如某些记录的示例所示)。
答案 1 :(得分:0)
因为它返回的错误非常有用,只需执行它建议的内容并更改任何会使对象具有与以前不同的版本的内容。对我来说最简单的方法是添加用户元数据。