我们使用cloudfront在S3中托管了我们的脚本文件。每当我使用新的js文件更新旧的js文件时,它会删除文件的元数据。我必须重新进入他们。
有没有办法解决它?
答案 0 :(得分:1)
它无法修复,因为您描述的行为实际上并未被破坏 - 这是设计的。
以下可能听起来像文字游戏,但术语的细节解释了这个问题。
在S3中无法“更新”对象 - 它们只能被覆盖。当您上传新版本时,您没有更新该对象,您替换它,从技术上讲,这是一个不同的对象...具有相同的密钥(路径)。由于元数据是对象的属性(不是键的属性),因此不同的对象将具有不同的元数据,因此在上载对象时,必须设置该元数据。
事实上,要将非常精确点放在它上面,当你在控制台中“编辑”对象元数据时,你仍从技术上来说更新对象 - 您实际上正在制作对象有效负载的副本,创建另一个新对象,并且新对象具有您想要的元数据。此新对象(相同的有效负载,不同的元数据)将覆盖以前的对象(相同的有效负载,原始或空元数据)。 S3在内部执行有效负载复制,因此实际上并未下载并重新上载正文。
解决方法是使用某些内容来执行上传,这些内容将使用您想要的元数据,或者根据需要获取旧对象的元数据,并使用它来创建新对象。那些“东西”可能是你写的工具或你找到的工具。