更新 S3 文件删除元数据

Fiz*_*han 3 amazon-s3

我们使用 cloudfront 在 S3 中托管了我们的脚本文件。每当我用新的 js 文件更新旧的 js 文件时,它都会删除文件的元数据。我必须再次重新输入它们。

有什么办法可以解决吗?

Mic*_*bot 5

它无法修复,因为您描述的行为实际上并没有被破坏——这是设计使然。

以下内容可能听起来像是文字游戏,但术语的更详细点解释了这个问题。

对象不能在 S3 中“更新”——它们只能被覆盖。当您上传新版本时,您不是在更新对象,而是在替换它,因此,从技术上讲,这是不同的对象......具有相同的密钥(路径)。由于元数据是对象的属性(不是键的属性),不同的对象将具有不同的元数据,因此当上传对象时,必须设置该元数据。

事实上,把一个非常细点吧,当你“编辑”对象元数据在控制台,你仍然不是技术上更新的对象-你实际上是使物体的有效载荷的副本,创建另一个新对象,并且新对象具有您想要的元数据。这个新对象(相同的负载,不同的元数据)覆盖了之前的对象(相同的负载,原始的或空的元数据)。S3 在内部进行有效负载复制,因此实际上并未下载和重新上传正文。

解决方法是使用某些东西来进行上传,这些内容将使用您所需的元数据,或者根据需要获取旧对象的元数据,然后使用它来创建新对象。那个“东西”可能是你编写的工具或你找到的工具。