DynamoDB テーブルからデータを読み取るために AWS SDK for Javascript (Node.js) を使用しています。Auto Scaling 機能は、ほとんどの時間で優れた機能を発揮し、消費される読み取り容量ユニット (RCU) は 1 日のほとんどの時間で非常に低くなります。ただし、真夜中頃に実行されるプログラムされたジョブがあり、プロビジョニングされた RCU の約 10 倍を消費します。Auto Scaling は容量を調整するのに時間がかかるため、スロットルされた読み取り要求が多数あります。さらに、リクエストが完了していないのではないかと思います (ただし、エラー ログには例外が見つかりません)。
この状況に対処するために、AWS API ( updateTable ) を使用してプロビジョニングされた RCU を増やすことを検討しましたが、アプリケーションが必要とする RCU の数を計算するのは簡単ではないかもしれません。
したがって、私の 2 番目の推測は、失敗したリクエストを再試行し、オート スケールがプロビジョニングされた RCU を増やすのを待つことでした。AWS ドキュメントといくつかのスタック オーバーフローの回答で指摘されているように (特にProvisionedThroughputExceededExceptionについて):
Amazon DynamoDB の AWS SDK は、この例外を受け取ったリクエストを自動的に再試行します。したがって、リクエストが大きすぎるか、再試行キューが大きすぎて終了できない場合を除き、リクエストは最終的に成功します。
同様の質問 ( this one、this one、およびthis one ) を読みましたが、まだ混乱しています: リクエストが大きすぎる場合、または再試行キューが大きすぎて終了できない場合 (したがって、自動再試行後)、または実際に再試行する前に?
最も重要なのは、私のコンテキストで期待すべき例外ですか? (自動スケールがRCUを増加させるまで、それをキャッチして再試行できますか?)