予約済同時実行数の設定 - AWS Lambda

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

予約済同時実行数の設定

Lambda での同時実行は、関数が現在処理している未完了のリクエストの数です。利用できる同時実行コントロールには、次の 2 種類があります。

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

  • プロビジョニングされた同時実行 — これは、関数に割り当てる、事前に初期化された実行環境の数です。これらの実行環境は、受信した関数リクエストに即座に対応できます。プロビジョニングされた同時実行を設定すると、AWS アカウント に追加料金が請求されます。

このトピックでは、予約済み同時実行数を管理および設定する方法について説明します。これら 2 種類の同時実行制御の概念的な概要については、「予約同時実行とプロビジョニング同時実行」を参照してください。プロビジョニングされた同時実行数の設定の詳細については、プロビジョニング済み同時実行の設定 を参照してください。

注記

Amazon MQ イベントソースマッピングにリンクされた Lambda 関数には、デフォルトの最大同時実行数があります。Apache ActiveMQ の場合、同時インスタンスの最大数は 5 です。RabbitMQ の場合、同時インスタンスの最大数は 1 です。関数に予約またはプロビジョニングされる同時実行数を設定しても、これらの制限は変わりません。Amazon MQ を使用する場合のデフォルトの最大同時実行数の増加をリクエストするには、AWS Support にお問い合わせください。

予約済同時実行数の設定

Lambda コンソールまたは Lambda API を使用して、関数の予約済同時実行の設定を行うことができます。

関数の同時実行数を予約するには (コンソール)
  1. Lambda コンソールの [関数] ページを開きます。

  2. 同時実行を予約する関数を選択します。

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

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

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

  6. [保存] をクリックします。

[予約されていないアカウントの同時実行] の値から 100 を引いた値まで予約できます。残りの 100 単位の同時実行は、予約された同時実行を使用しない関数用です。例えば、アカウントの同時実行の上限が 1,000 の場合、1 つの関数で同時実行の 1,000 ユニットすべては予約できません。


        予約する同時実行が多すぎると、エラーが発生します。

関数の同時実行数を予約すると、他の関数で使用できる同時実行数のプールに影響を与えることがあります。たとえば、function-a の同時実行に 100 ユニットを予約した場合、function-a が予約された同時実行の 100 ユニットすべてを使用しなくても、アカウント内の他の関数は残りの 900 ユニットの同時実行を共有する必要があります。

意図的に関数をスロットリングするには、予約済同時実行数をゼロに設定します。これにより、制限を削除するまで、関数のイベント処理が停止します。

以下の API オペレーションを使用して、Lambda API で予約された同時実行を設定するには

例えば、AWS Command Line Interface (CLI) を使用して予約された同時実行を設定するには、put-function-concurrency コマンドを使用します。以下のコマンドでは、my-function という名前の関数に 100 の同時実行数を予約します。

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

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

{ "ReservedConcurrentExecutions": 100 }

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

関数が現在トラフィックを処理している場合は、メトリクス を使用してCloudWatch 同時実行メトリクスを簡単に表示できます。特に、ConcurrentExecutions メトリクスはアカウント内の各関数の同時呼び出し数を表示します。


        関数の経時的な同時実行数を示すグラフです。

グラフによると、この関数は通常、1 日平均 5~10 件、最大で 20 件の同時リクエストを処理します。アカウントに、他にも多くの関数があるとします。この関数がアプリケーションにとって重要な関数で、リクエストを一切ドロップしたくない場合は、予約された同時実行の設定として 20 以上の数を使用します。

または、以下の式を使用して同時実行を計算できることを思い出してください。

Concurrency = (average requests per second) * (average request duration in seconds)

1 秒あたりの平均リクエスト数に平均リクエスト時間 (秒単位) を掛けると、予約する必要がある同時実行数の大まかな見積もりが得られます。1 秒あたりの平均リクエスト数は Invocation メトリクスを、平均リクエスト時間 (秒単位) は Duration メトリクスを使用して見積もることができます。詳細については、「Lambda 関数のメトリクスの使用」を参照してください。