首页 > 解决方案 > AWS S3 nodejs - 如何通过他的前缀获取对象

问题描述

我正在搜索如何检查 nodejs 中我的 aws s3 存储桶中是否存在一个对象,而不列出我的所有对象(~1500)并检查对象的前缀,但我找不到如何。

格式是这样的:

<prefix I want to search>.<random string>/

前任:

tutturuuu.dhbsfd7z63hd7833u/

标签: node.jsamazon-web-servicesamazon-s3

解决方案


因为您不知道整个对象 Key,所以您需要执行一个列表并按前缀过滤。AWS nodejs sdk提供了这样的方法。这是一个例子:

s3.listObjectsV2({
  Bucket: 'youBucket',
  MaxKeys: 1,
  Prefix: 'tutturuuu.'
}, function(err, data) {
  if (err) throw err;

  const objectExists = data.Contents.length > 0
  console.log(objectExists);
});

请注意,使用它MaxKeys以减少网络使用量很重要。如果多个对象具有前缀,那么您将需要返回所有内容并决定您需要哪一个。

此 API 调用将仅返回元数据。获得完整密钥后,您可以使用它getObject来检索对象内容。


推荐阅读