【问题标题】:How to get 5 latest files from s3 bucket in react js?如何从 React js 中的 s3 存储桶中获取 5 个最新文件?
【发布时间】:2019-05-06 19:33:55
【问题描述】:

我正在使用 aws-sdk 获取对象列表如下:

 const AWS = require('aws-sdk/global');

 const S3 = require('aws-sdk/clients/s3');

 AWS.config.update({ accessKeyId: 'abc123', secretAccessKey: 'teyb3872312', region: 'eu-west-1' });
 const s3 = new AWS.S3();

const params = {
  Bucket: 'demo-bucket',
  Delimiter: '',
  Prefix: '',
};

  s3.listObjectsV2(params, (err, data) => {
  if (err) throw err;
  console.log(data.Contents);
 })

从这段代码中,我从桶中获取了所有一千个对象,但只想要桶中的 5 个最新对象。

如果有人知道解决方案,请提出建议。

【问题讨论】:

    标签: reactjs amazon-web-services amazon-s3 aws-sdk


    【解决方案1】:

    无法根据LastModified 请求列表。

    相反,您的应用程序需要检索整个列表,然后对LastModified 返回的对象进行排序,然后选择最新的 5 个。

    另外,请注意,每次调用最多将返回 1000 个对象。您将需要使用延续令牌来请求接下来的 1000 个对象,并不断重复直到列表完成。

    如果您要定期执行此操作,您还可以考虑使用Amazon S3 Inventory,它可以提供存储桶中所有对象的每日列表。

    【讨论】:

      【解决方案2】:

      S3 不允许按上次修改日期对对象进行排序,因此您需要获取所有对象,然后在代码中对其进行排序。

      如果存储桶较大,可能会导致性能问题。

      为了避免这种情况,您应该在上传后将对象的创建日期存储在某个数据库中。您可以从您的代码中执行此操作或订阅 S3 事件并跟踪 PUT 操作(请参阅https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTnotification.html

      【讨论】:

        猜你喜欢
        • 2021-12-23
        • 1970-01-01
        • 2021-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多