AmazonS3Client.listObjects() 大型 s3bucket 问题

AmazonS3Client.listObjects() issue with large s3bucket

我有一个包含数千个条目的 s3bucket 问题,而且列表花费了太多时间。

就像现在一样,我使用以下方法检索对象;

ListObjectsResponse response = client.ListObjects(request);

foreach (S3Object entry in response.S3Objects.Where(p => p.Key.IndexOf(".mov") > 0 && DateTime.Parse(p.LastModified.ToString()) > DateTime.Now.AddDays(-1)).OrderByDescending(k => k.LastModified))
{
     Console.WriteLine(entry.Key + Environment.NewLine);
}

通过以下代码在 LIstObjectsRequest 对象中指定文件夹

 ListObjectsRequest request = new ListObjectsRequest
                {
                    BucketName = "selectedbucket",
                    Prefix = "selectedfolder/",
                    MaxKeys = 2
                };

这个简单的检索花费的时间很长(大约 7 分钟),所以我需要做的是在实际请求级别限制结果,而不是在检索 s3bucket 中的所有条目之后限制。

有没有办法通过直接在 "client.ListObjects(request)" 调用中添加限制条件来加快速度?我可以在 ListObjectsRequest 对象或类似对象中添加条件吗?

提前感谢您的反馈和想法!

问题已解决。我通过将 Maxkeys 增加到更高的数量 (5000) 而不是之前定义的 2 来增加返回值的数量。据我所知,这限制了调用量,这需要时间。

ListObjectsRequest request = new ListObjectsRequest
            {
                BucketName = "selectedbucket",
                Prefix = "selectedfolder/",
                MaxKeys = 5000
            };

这将性能从 7 分钟缩短到大约 2 秒。