Lambda の予約済み同時実行数の管理 - AWS Lambda

Lambda の予約済み同時実行数の管理

ご利用いただける同時実行コントロールには、次の 2 種類があります。

  • 予約同時実行 – 予約同時実行は、関数の同時インスタンスの最大数を保証します。ある関数が予約済同時実行数を使用している場合、他の関数はその同時実行数を使用できません。関数に対して予約された同時実行を設定する場合には料金はかかりません。

  • プロビジョニング済み同時実行 – プロビジョニング済み同時実行は、リクエストされた数の実行環境を初期化して、関数の呼び出しに即座に応答する準備をします。プロビジョニングされた同時実行を設定すると、AWS アカウントに課金が発生することに注意してください。

このトピックでは、予約済み同時実行数を管理および設定する方法について説明します。関数のレイテンシーを削減する場合は、プロビジョニングされた同時実行数を使用してください。

同時実行数とは、ある時点で関数が処理しているリクエストの数を指します。関数が呼び出されると、Lambda はその関数のインスタンスを割り当ててイベントを処理します。関数コードの実行が完了すると、別のリクエストを処理できます。リクエストの処理中に関数が再度呼び出されると、別のインスタンスが割り当てられるため、関数の同時実行数が増えます。アカウント内のすべての関数の同時実行数の合計は、リージョンごとのクォータに応じて異なります。

同時実行がスケーリングとどのように相互作用するかを学習するには、「Lambda 関数のスケーリング」を参照してください。

予約済同時実行数の設定

関数の予約同時実行の設定を管理するには、Lambda コンソールを使用します。

関数の同時実行数を予約するには

  1. Lambda コンソールで [Functions (関数)] ページを開きます。

  2. 関数を選択します。

  3. [設定]、[同時実行] の順にクリックします。

  4. [同時実行数] で、[編集] をクリックします。

  5. [同時実行の予約] をクリックします。関数用に予約する同時実行の量を入力します。

  6. [Save] を選択します。

表示されている [Unreserved account concurrency (予約されていないアカウントの同時実行数)] 値まで予約できます。予約済同時実行数のない関数の場合は、それより 100 少ない値まで予約できます。関数をスロットリングするには、予約済同時実行数をゼロに設定します。これにより、制限を削除するまで、イベントの処理が停止します。

次の例は、予約済み同時実行のプールを使用する 2 つの関数と、予約されていない同時実行のプールを使用する他の関数を示しています。スロットリングエラーは、プール内のすべての同時実行が使用されている場合に発生します。


        2 つの関数に割り当てられた予約済み同時実行数。

Legend

  • 関数の同時実行

  • 予約済み同時実行

  • 予約されていない同時実行

  • スロットリング

同時実行数をリザーブすると、次のことが起こります。

  • 他の関数が関数のスケーリングを妨げない – 予約同時実行のない同じリージョン内のアカウントのすべての関数は、予約のない同時実行のプールを共有します。予約済同時実行数がない場合、使用可能なすべての同時実行数を他の関数が使い果たす可能性があります。これにより、必要なときに関数がスケールアップしなくなります。

  • 関数のスケーリングが制御不能にならない – 予約同時実行は、予約のないプールからの同時実行を関数が使用することも制限するため、関数の最大同時実行に上限を設けられます。同時実行数を予約することで、リージョンで利用可能なすべての同時実行数を関数が使用したり、ダウンストリームリソースを過負荷にしたりしないようにできます。

関数あたりの同時実行数を設定すると、他の関数で使用できる同時実行数のプールに影響を与えることがあります。問題を回避するには、PutFunctionConcurrency および DeleteFunctionConcurrency API オペレーションを使用できるユーザーの数を制限します。

Lambda API による同時実行の設定

AWS CLI または AWS SDK で同時実行数の設定を管理するには、以下の API オペレーションを使用します。

予約済同時実行数を AWS CLI で設定するには、put-function-concurrency コマンドを使用します。以下のコマンドは、my-function という名前の関数に 100 の同時実行数を予約します。

aws lambda put-function-concurrency --function-name my-function --reserved-concurrent-executions 100

次のような出力が表示されます。

{ "ReservedConcurrentExecutions": 100 }