0
我有一個包含數千個條目的s3bucket的問題,並且列表花費了太多時間。大s3bucket的AmazonS3Client.listObjects()問題
因爲它是現在,我檢索對象使用;
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' *限制*每個響應的密鑰數量不超過您傳遞的數量,實際最大值爲1000,所以較小的值意味着更多的請求(需要更多時間和花費更多資金)來獲取相同數量的對象。 5000可能只是被忽略了,因爲這比S3支持的價值更大。根本不需要指定'MaxKeys',因爲未指定時的默認值也是最大值1000. http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html –
謝謝!澄清@ Michael-sqlbot – user3105469