Lambda のスケーリング動作 - AWS Lambda

Lambda のスケーリング動作

関数が受け取るリクエストが増えると、Lambda が実行環境数を自動的にスケールアップしてこれらのリクエストを処理します。これはアカウントが同時実行クォータに達するまで行われます。ただし、突然のトラフィック急増によるオーバースケーリングを防ぐために、Lambda では関数がスケールできる速度を制限しています。この同時実行のスケーリングレートは、アカウントの関数がリクエストの増加に応じてスケールインできる最大レートです。(つまり、Lambda がどれだけ速く新しい実行環境を作成できるかということです。) 同時実行のスケーリングレートは、アカウントレベルの同時実行数の上限 (関数で利用できる同時実行の合計量) とは異なります。

同時実行スケーリングレート

各 AWS リージョン および各関数において、同時実行のスケーリングレートは 10 秒ごとに 1,000 の実行環境インスタンス (または 10 秒ごとに 1 秒あたり 10,000 リクエスト) です。つまり、Lambda は 10 秒ごとに最大 1,000 の追加実行環境インスタンスを各関数に割り当てるか、または 1 秒あたり 10,000 件の追加リクエストに対応できます。

通常、この制限について心配する必要はありません。ほとんどのユースケースでは、Lambda のスケーリングレートで十分です。

重要なのは、同時実行のスケーリングレートは関数レベルの上限であることです。つまり、アカウント内の各関数は、他の関数とは別個にスケールできます。

注記

実際には、Lambda は 10 秒ごとに 1,000 ユニットを 1 回補充するのではなく、同時実行のスケーリングレートを時間経過と共に継続的に補充するよう最大限試みます。

Lambda では、同時実行スケーリングレートの未使用分が発生しません。つまり、どの時点でも、スケーリングレートは常に、最大 1,000 ユニットの同時実行です。例えば、10 秒間隔で利用可能な 1,000 ユニットの同時実行をまったく使用しなかった場合、次の 10 秒間隔で 1,000 ユニットが追加で発生することはありません。次の 10 秒間の同時実行スケーリングレートは 1,000 のままです。

関数が受け取るリクエストの数が増え続ける限り、Lambda は利用可能な最速のレート (アカウントの同時実行数の上限まで) でスケールします。予約された同時実行数を設定することで、個々の関数が使用できる同時実行の量を制限できます。リクエストが入ってくるスピードに関数のスケールが追いつけない場合、または関数が同時実行数の最大値に達した場合は、追加リクエストはスロットルエラーで失敗します (ステータスコード 429)。