更新 S3 文件删除元数据
Update S3 file remove meta data
我们使用云端在 S3 中托管我们的脚本文件。每当我用新的 js 文件更新旧的 js 文件时,它都会删除文件的元数据。我必须再次重新进入它们。
有什么办法可以解决吗?
它无法修复,因为您描述的行为实际上并没有被破坏 -- 它是设计使然。
以下内容可能听起来像是文字游戏,但术语的细微之处说明了问题。
S3 中的对象不能 "updated" -- 它们只能被覆盖。当您上传新版本时,您并不是在更新对象,而是在 替换 它,因此,从技术上讲,这是一个 不同的 对象。 . 使用相同的键(路径)。由于元数据是对象的属性(不是键的属性),不同的对象会有不同的元数据,所以当上传对象时,必须设置该元数据。
事实上,要非常指出一点,当您在控制台中"edit"对象元数据时,您仍然 技术上不是 更新 对象——您实际上是在复制对象的有效负载,创建另一个新对象,并且新对象具有您想要的元数据。这个新对象(相同的有效负载,不同的元数据)覆盖了以前的对象(相同的有效负载,原始或空元数据)。 S3 在内部复制有效负载,因此实际上并没有下载和重新上传正文。
解决方法是使用一些东西来进行上传,这些上传将使用您想要的元数据,或者根据需要获取旧对象的元数据,然后使用它来创建新对象。 "something" 可能是您编写的工具或您找到的工具。
我们使用云端在 S3 中托管我们的脚本文件。每当我用新的 js 文件更新旧的 js 文件时,它都会删除文件的元数据。我必须再次重新进入它们。
有什么办法可以解决吗?
它无法修复,因为您描述的行为实际上并没有被破坏 -- 它是设计使然。
以下内容可能听起来像是文字游戏,但术语的细微之处说明了问题。
S3 中的对象不能 "updated" -- 它们只能被覆盖。当您上传新版本时,您并不是在更新对象,而是在 替换 它,因此,从技术上讲,这是一个 不同的 对象。 . 使用相同的键(路径)。由于元数据是对象的属性(不是键的属性),不同的对象会有不同的元数据,所以当上传对象时,必须设置该元数据。
事实上,要非常指出一点,当您在控制台中"edit"对象元数据时,您仍然 技术上不是 更新 对象——您实际上是在复制对象的有效负载,创建另一个新对象,并且新对象具有您想要的元数据。这个新对象(相同的有效负载,不同的元数据)覆盖了以前的对象(相同的有效负载,原始或空元数据)。 S3 在内部复制有效负载,因此实际上并没有下载和重新上传正文。
解决方法是使用一些东西来进行上传,这些上传将使用您想要的元数据,或者根据需要获取旧对象的元数据,然后使用它来创建新对象。 "something" 可能是您编写的工具或您找到的工具。