【问题标题】:How to list objects in a date range with aws-sdk-js?如何使用 aws-sdk-js 列出日期范围内的对象?
【发布时间】:2020-06-03 10:47:09
【问题描述】:

我希望使用 aws s3 javascript sdk 列出两个日期之间存储在 S3 存储桶中的所有对象。根据 ListObjects 函数,除了 prefix 或 delimiter 之外,没有允许这样做的参数,但在我的情况他们没用。 是否有任何解决方案可以做到这一点,或者我必须获取返回的数据然后根据LastModified 过滤它们?

【问题讨论】:

  • 如果有帮助的话,我在 boto3 中有一个工作部件..
  • @AmitBaranes 你能给我链接吗?
  • 当然 - stackoverflow.com/a/59146547/9931092 您需要在 if 语句下添加另一个比较条件,如果您需要帮助,请告诉我
  • @AmitBaranes 这是我想到的解决方案,但是如果存储桶包含很多对象(例如 1M),我们必须获取所有对象,然后手动按日期过滤。我认为有根据我在官方文档中找到的内容,不是直接使用 aws s3 api 的选项。
  • 老实说,我从来没有使用 aws s3 api 来做这种事情,因为 boto3 非常简单并且非常易于使用。我提供的示例符合您的要求吗?顺便说一句,当使用bucket.objects.filter(Prefix= folder_name) 时,您会得到对象的元数据,这意味着对象大小是 1MB 还是 1GB 都没有关系。

标签: javascript amazon-web-services amazon-s3 aws-sdk-js


【解决方案1】:

根据文档和我根据issue 3102得到的答案,在写这个答案的时候没有现有的api,所以我手动做:

async function filteredKeysByDate(startDate, endDate) {
const listedObjects = await s3.listObjects({
Bucket: 'myBucket'
Prefix: 'prefix'})

 return listedObjects.reduce((acc, file) => {
  if (file.LastModified >= startDate && file.LastModified <= endDate) {
    acc= acc.concat(file)
  }
   return acc;
  }, [])
} 

【讨论】:

    猜你喜欢
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 2022-11-17
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多