【问题标题】:aws s3 metadata all keysaws s3 元数据所有键
【发布时间】:2021-06-08 22:48:58
【问题描述】:

在 s3 对象上读取用户定义元数据的唯一方法似乎是使用 head-object。

AWS_PROFILE=development aws s3api head-object --bucket "xxx-development" --key 'my-object-key'

s3api list-objects 让您可以获取存储桶中的所有对象,包括能够使用 --query 过滤键中所需的模式,但它不会提供与这些对象关联的用户定义元数据。

AWS_PROFILE=development aws s3api list-objects --bucket "xxx-development" --query 'Contents[?contains(Key, 'original')]'

有没有一种方法可以获取所有对象和相关的用户定义的元数据,而无需枚举所有对象并遍历所有对象并对每个对象执行头对象?

用户定义的元数据键可帮助我们对上传内容进行分类,以提供有意义的见解。

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    很遗憾,没有。 GET Bucket (List Objects) Version 2(以及版本 1)不返回对象的用户定义元数据。

    您必须对GET Bucket 返回的每个对象使用HEAD object

    【讨论】:

    • 谢谢。是的,这就是我正在考虑的当前方法。我假设这将是最有效的方法?
    • 是的,您的解决方案是最有效的。另一种可能的解决方案是使用GET Object 而不是HEAD Object,但这在响应大小方面效率较低。
    • 你肯定会为了这个目的而坚持使用HEAD。 @Jay 我使用的替代方法是我在 PUT 上为存储桶设置了 Lambda 触发器。这些调用执行HEAD 请求的node.js 代码,并将元数据存储在RDS/MariaDB 中,完全标准化并为正确查询建立索引。
    • 谢谢迈克尔。这是一个很好的提示。我们已经为将来添加了类似的东西。我们推送有用的统计数据,因为 cloudwatch 指标和 datadog 提供了一个很好的界面来绘制和查看指标。但我喜欢将其推送到数据库的想法,在那里我可以对数据进行分区并将属性与单个资产相关联,以便将来需要时批量重新处理文件。
    猜你喜欢
    • 2021-07-26
    • 2019-05-08
    • 2016-02-26
    • 1970-01-01
    • 2016-06-15
    • 2018-11-26
    • 2017-05-08
    • 1970-01-01
    相关资源
    最近更新 更多