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

Lambda のスケーリング動作

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

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

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

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

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

注記

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

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

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