AWS Lambda
開発者ガイド

AWS Lambda 関数スケーリング

初めて関数を呼び出すと、AWS Lambda により、関数のインスタンスが作成され、イベントを処理するためのハンドラーメソッドが実行されます。関数がレスポンスを返すと、追加のイベントを処理するために作業を継続します。最初のイベントの処理中に関数を再び呼び出すと、Lambda により別のインスタンスが作成されます。

さらにイベントが入ってくると、Lambda は使用可能なインスタンスにそれらを送信し、必要に応じて新しいインスタンスを作成します。関数の同時実行数は、同時にリクエストを処理するインスタンスの数を指します。最初のトラフィックバーストの場合、関数の同時実行数は最初のレベル (500 から 3000 の間 ) に達する可能性があり、これはリージョンによって異なります。

初期同時実行数バースト制限

  • 3000 – 米国西部 (オレゴン)、米国東部(バージニア北部)、欧州 (アイルランド)。

  • 1000 – アジアパシフィック (東京)、欧州 (フランクフルト)。

  • 500 – その他のリージョン。

最初のバーストの後、関数の同時実行数は、1 分ごとにさらに 500 インスタンス増加します。これは、すべてのリクエストに対応できる十分なインスタンスを確保するまで、または同時実行数の制限に達するまで続きます。リクエストの数が減ると、Lambda は他の関数のスケーリングキャパシティを解放するため、使われていないインスタンスを停止します。

リージョンの同時実行数の制限は 1,000 から始まり、サポートセンターのコンソールでリクエストを送信することで増やすことができます。関数ごとにスケーリングを制限し、キャパシティを割り当てるには、関数に予約された同時実行数を設定することができます。

リクエストが入ってくるスピードに関数のスケールが追いつけない場合、または関数が同時実行数の最大値に達した場合は、追加リクエストはスロットルエラーで失敗します (ステータスコード 429)。関数を直接呼び出す場合、再試行可能なエラーとして扱う必要があります。

イベントソースマッピング、または別の AWS サービスで関数を非同期的に呼び出す場合、スケーリングの動作はさまざまです。たとえば、ストリームから読み取るイベントソースマッピングは、ストリーム内のシャードの数を超えてスケーリングしません。イベントソースによって使用されていないスケーリングキャパシティは、イベントソースや他のクライアントで使用できます。詳細については、以下のトピックを参照してください。

アカウントの同時実行レベルは、ConcurrentExecutions およびUnreservedConcurrentExecutions メトリクスを使用してモニタリングできます。詳細については、「AWS Lambda のメトリクス」を参照してください。