如何使用 AWS CLI 从 S3 存储桶中的所有对象中删除用户定义的元数据?

问题描述 投票:0回答:1

我希望从 S3 存储桶中的所有对象中删除特定的用户定义元数据,以消除数据重复,因为我们将元数据存储在外部。鉴于对象数量众多,手动更新每个对象是不可行的。我知道在 S3 中修改对象的元数据会导致使用更新的元数据创建该对象的新副本以及新的“上次修改”日期,并且我对此行为感到满意。

考虑到我们 S3 使用的规模,手动更新每个对象并不是一种实用的方法。因此,我正在寻找一种使用 AWS CLI 自动化此过程的方法。主要目标是:

  1. 迭代指定 S3 存储桶中的每个对象。
  2. 从这些对象中删除指定的用户定义元数据,而不更改对象数据本身。
  3. 除了对元数据和“上次修改”日期进行必要的更新之外,确保流程保持原始对象的完整性。

我正在寻找有关如何构建能够高效且最小干扰地实现此目标的 AWS CLI 命令或脚本的指导。此外,任何有关管理 S3 中大规模元数据更新的最佳实践的见解都非常有价值。

谢谢你。

来源:

编辑 Amazon S3 中的对象元数据

使用对象元数据:AWS S3

java spring amazon-web-services amazon-s3 aws-cli
1个回答
0
投票

您可以在执行复制时删除元数据:

aws s3 cp s3://my-bucket/my-object s3://my-bucket/my-object --metadata-directive REPLACE

根据 cp — AWS CLI 命令参考

如果使用

REPLACE
,复制的对象将仅具有 CLI 命令指定的元数据值。

要更新所有对象,您首先需要列出对象,然后对每个对象运行上述命令。使用编程语言(例如 Python)执行此操作可能更容易,但如果您具有良好的 shell 脚本技能,则可以使用 AWS CLI 执行此操作。

有时我会作弊,将对象列表放入Excel中,然后构建一个执行此类操作的公式。我复制下来为每个对象创建命令。然后我将结果推入一个文本文件并使用 shell 执行它。

© www.soinside.com 2019 - 2024. All rights reserved.