【问题标题】:is it possible to fetch multiple aws s3 object head (metadata)?是否可以获取多个 aws s3 对象头(元数据)?
【发布时间】:2026-02-02 14:55:02
【问题描述】:

我正在使用 AWS S3 将最终用户的文件存储在单个存储桶中。我的后端是 Golang。

在我的 Web 界面中,我希望其个人空间中的任何用户都能够查看其文件和文件夹名称、MIME 类型、大小和上次修改日期。为了实现这一点,我看到了:

func (c *S3) HeadObject(input *HeadObjectInput) (*HeadObjectOutput, error)

如果我想获取单个文件元数据,但我找不到多个文件的等价物,这很好。

ListObjectsV2 之类的东西,我可以使用前缀和分隔符来缩小搜索范围,但如果没有文件的全部内容将是完美的。

如果没有端点来获取多个文件元数据,最好的方法是什么?

谢谢!

【问题讨论】:

  • 我认为不存在这样的事情。甚至 AWS 本身也使用 dynamo+s3 组合,以应对需要快速 + 精美元数据查询的情况。
  • 我很惊讶,我真的认为这可能是常见的用例。但无论如何谢谢你!在 db 和 s3 之间使用组合可能很酷,你有任何资源吗?所以我可以知道这样做是否值得痛苦
  • docs.aws.amazon.com/AmazonS3/latest/userguide/… - 基本上,s3 上的每个对象修改都可以向 Lambda 发出一个事件。 Lambda 处理程序可以更新数据库。
  • 哦,真的谢谢,我更了解如何进行。您的输入应该是答案而不是评论。

标签: amazon-web-services go amazon-s3


【解决方案1】:

您可以从 S3 获得以下系统定义的元数据列表。

  1. 列表项
  2. 内容长度
  3. 最后修改
  4. 内容类型
  5. 内容-MD5
  6. x-amz-server-side-encryption
  7. x-amz-version-id
  8. x-amz-delete-marker
  9. x-amz-存储类
  10. x-amz-website-redirect-location
  11. x-amz-server-side-encryption-aws-kms-key-id
  12. x-amz-server-side-encryption-customer-algorithm

如果您要查找的是 headObject(metadata),则 HEAD 操作会从对象中检索元数据,而不返回对象本身。如果您只对对象的元数据感兴趣,则此操作很有用。

请参考下方Document

编辑:来自 aws doc 的一些示例代码

【讨论】: