何千ものエントリを含むs3bucketに問題があり、リストに時間がかかりすぎます。Amazon S3Client.listObjects()に大きなs3bucketの問題があります
今のところ、私はオブジェクトを取得します。
コードの下ListObjectsRequest request = new ListObjectsRequest
{
BucketName = "selectedbucket",
Prefix = "selectedfolder/",
MaxKeys = 2
};
通じLIstObjectsRequestオブジェクト内のフォルダの指定で
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);
}
この単純な検索にかかる時間は膨大である(約7分)ので、私は何をする必要があるかの制限は、実際の結果でありますs3bucket内のすべてのエントリを取得してAFTERを制限するのではなく、リクエストレベルを使用します。
"client.ListObjects(request)"呼び出しで直接制限条件を追加することでこれをスピードアップする方法はありますか? ListObjectsRequestオブジェクトなどの条件を追加できますか?
フィードバックと考えをお寄せいただきありがとうございます。
*これにより、通話量が制限されます。実際には「制限」ではなく、「正しく」制限されます。 'MaxKeys' *はあなたが渡す数以下の最大応答数に制限します。実際の最大値は1000までです。値が小さいほど同じ数のオブジェクトをフェッチするために、より多くのリクエストが必要です(時間がかかり、コストがかかります) 。 5000はおそらく単純に無視されます。これはS3よりも大きな値です。 'MaxKeys'を指定するのは実際には必要ありません。なぜなら、指定されていない場合のデフォルト値も最大1000であるからです。http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html –
ありがとう明確化@ Michael-sqlbot – user3105469