多数のキーを含む S3 バケットでは、REST API を介してキーを一覧表示するプロセスが非常に遅くなります。
- 一度にリストできるキーは 1000 個までです。
- (私が知る限り) 5001 番目のキーを特定する唯一の方法は、最初の 1000 個のキーをリストし、応答の次のマーカーに基づいて次のキーをリストし、5001 に到達するまで再帰することです。
- S3 REST API リクエストのレイテンシーは非常に高く、通常、1000 個のキーのリクエストには数秒かかります。
100 個の同時キー リスト REST 要求を作成しても個々の要求が遅くなることはないため、そうでなければ、このプロセスは並列化による最適化の機が熟します。しかし、私のアルゴリズムが「愚か」で、可能なキースペースを事前定義されたマーカーに分割するだけの場合 (たとえば、「」、「a」、「b」、「c」、「d」、「e」... ) すべてのキーが「images/」で始まるバケット内のキーの一覧表示は、実際には高速化されません。
したがって、S3 を実際に使用した経験のある人が、バケットのキー スペースをトラバースするより良い方法を知っているかどうか、または同時実行によるキー リストを改善するための適応型 (つまり、「愚かではない」) アルゴリズムを試したことがあるかどうか疑問に思っています。