AWS Lambda
開発者ガイド

スケーリング動作について

同時実行数とは、ある時点に関数コードが実行されている件数を指します。同時実行数を見積もることはできますが、Lambda 関数がポーリングベースのイベントソースからのイベントを処理しているかによって、同時実行数は異なります。

ポーリングベースでないイベントソースからのイベントを処理する Lambda 関数を作成する場合 (たとえば、Lambda が Amazon S3 や API Gateway などの他のソースからのすべてのイベントを処理できる場合)、発行される各イベントが同時実行の単位です (アカウントの上限まで)。したがって、イベントソースが発行するイベント (またはリクエスト) の数が、同時実行数に影響します。以下の数式を使用して、Lambda 関数の同時呼び出し数を見積もることができます。

events (or requests) per second * function duration

たとえば、Amazon S3 イベントを処理する Lambda 関数について検討します。Lambda 関数が平均 3 秒、Amazon S3 が 1 秒あたり 10 個のイベントを発行するとします。したがって、Lambda 関数の同時実行数は 30 です。

また、ポーリングベースのイベントソースの同時実行数も、以下に示すその他の要因によって異なります。

  • ストリームベースのポーリングベースのイベントソース

    • Amazon Kinesis Data Streams

    • Amazon DynamoDB

    Kinesis または DynamoDB ストリームを処理する Lambda 関数。シャードの数は同時実行の単位です。ストリームに 100 個の実行中シャードがある場合は、最大で 100 個の Lambda 関数呼び出しが同時に実行されています。これは、Lambda が各シャードのイベントを順番に処理するためです。

  • ポーリングベースのイベントソース: Amazon SQS キューを処理する Lambda 関数に対して AWS Lambda は、最大同時実行レベルに達するまでキューでポーリングを自動的にスケーリングします。この場合、各メッセージバッチは単一の同時単位と見なされます。AWS Lambda の自動スケーリング動作は、キューが空の場合にポーリングコストを低く維持すると同時に、キューの利用が非常に多い場合に高度のスループットを達成できるように設計されています。

    Amazon SQS イベントソースマッピングが最初から有効になっている場合、Lambda は Amazon SQS キューのロングポーリングを開始します。ロングポーリングは、空のレスポンスの数を減らすことによって Amazon Simple Queue Service をポーリングするコストを削減し、メッセージが到着すると、最適な処理レイテンシーを提供します。

    キューへのメッセージの急激に増加すると、AWS Lambda は、関数の同時実行数が 1000 までのアカウント同時実行制限あるいは関数同時実行制限のいずれか低い方に達するまで、ポーリングアクティビティを自動的にスケールアップします。Amazon Simple Queue Service では 5 つの同時関数呼び出しが最初のバーストでサポートされ、1 分ごとに 60 の同時実行呼び出しで同時実行を増加します。

    注記

    アカウントレベルの制限はアカウント内の他の関数の影響を受け、関数ごとの同時実行数は関数に送信されたすべてのイベントに適用されます。詳細については、「同時実行数の管理」を参照してください。

リクエスト料金

リクエスト率とは、Lambda 関数が呼び出される率のことです。ストリームベースのサービスを除くすべてのサービスの場合は、リクエスト率はイベントソースがイベントを生成する率です。ストリームベースのサービスの場合、AWS Lambda は次のようにリクエスト率を計算します。

request rate = number of concurrent executions / function duration

たとえば、5 つのアクティブなシャードがストリームにあり (つまり、5 つの Lambda 関数が同時に実行されていて)、Lambda 関数に 2 秒かかる場合、リクエスト率は 2.5 リクエスト/秒です。

自動スケーリング

AWS Lambda は、同時実行数の制限まで、トラフィックの増加に応じて関数の実行を動的にスケールします。持続的な負荷においては、関数の同時実行は、リージョンによって異なる 500 から 3000 まで同時実行数の初期レベルをバーストします。最初のバースト後、関数の容量は、負荷が落ち着くまで、あるいは全関数の合計の同時実行がリージョンの制限に達するまで、1 分ごとに追加の 500 同時実行を増加します。

リージョン 最初の同時実行バースト
米国東部 (オハイオ)、米国西部 (北カリフォルニア)、カナダ (中部) 500
米国西部 (オレゴン)、米国東部(バージニア北部) 3000
アジアパシフィック (ソウル)、アジアパシフィック (ムンバイ)、アジアパシフィック (シンガポール)、アジアパシフィック (シドニー) 500
アジアパシフィック (東京) 1,000
欧州 (ロンドン)、EU (パリ) 500
欧州 (フランクフルト) 1,000
欧州 (アイルランド) 3000
南米 (サンパウロ) 500
中国 (北京)、中国 (寧夏) 500
AWS GovCloud (US-West) 500

注記

関数が VPC に接続されている場合は、Amazon VPC ネットワークインターフェイスの制限によってスケーリングが妨げられることがあります。詳細については、「Amazon VPC 内のリソースにアクセスできるように Lambda 関数を構成する」を参照してください。

スケーリングを制限するには、 予約された同時実行数で関数を設定することができます。詳細については、「同時実行数の管理」を参照してください。