我希望从 S3 存储桶中的所有对象中删除特定的用户定义元数据,以消除数据重复,因为我们将元数据存储在外部。鉴于对象数量众多,手动更新每个对象是不可行的。我知道在 S3 中修改对象的元数据会导致使用更新的元数据创建该对象的新副本以及新的“上次修改”日期,并且我对此行为感到满意。
考虑到我们 S3 使用的规模,手动更新每个对象并不是一种实用的方法。因此,我正在寻找一种使用 AWS CLI 自动化此过程的方法。主要目标是:
我正在寻找有关如何构建能够高效且最小干扰地实现此目标的 AWS CLI 命令或脚本的指导。此外,任何有关管理 S3 中大规模元数据更新的最佳实践的见解都非常有价值。
谢谢你。
来源:
您可以在执行复制时删除元数据:
aws s3 cp s3://my-bucket/my-object s3://my-bucket/my-object --metadata-directive REPLACE
如果使用
,复制的对象将仅具有 CLI 命令指定的元数据值。REPLACE
要更新所有对象,您首先需要列出对象,然后对每个对象运行上述命令。使用编程语言(例如 Python)执行此操作可能更容易,但如果您具有良好的 shell 脚本技能,则可以使用 AWS CLI 执行此操作。
有时我会作弊,将对象列表放入Excel中,然后构建一个执行此类操作的公式。我复制下来为每个对象创建命令。然后我将结果推入一个文本文件并使用 shell 执行它。