SQS イベントソースマッピングのスケーリング動作の設定
標準キューの場合、Lambda はロングポーリングを使用して、キューがアクティブになるまでキューをポーリングします。メッセージが利用可能な場合、Lambda は、関数を 5 回同時に呼び出すことで、一度に 5 つのバッチの処理を開始します。メッセージがまだ利用可能な場合、Lambda はバッチを読み込むプロセスの数を 1 分あたり最大 300 インスタンスまで増やします。イベントソースマッピングによって同時に処理できるバッチの最大数は 1,000 です。
FIFO キューの場合、Lambda は、受信した順序でメッセージを関数に送信します。FIFO キューにメッセージを送信する場合、メッセージグループ ID を指定します。Amazon SQS は、同じグループ内のメッセージが Lambda に順番に配信されるようにします。Lambda がメッセージをバッチに読み込むとき、各バッチには複数のメッセージグループからのメッセージが含まれることがありますが、メッセージの順序は維持されます。関数がエラーを返す場合、その関数は、Lambda が同じグループから追加のメッセージを受信する前に、対象メッセージですべての再試行を試みます。
Amazon SQS イベントソースの最大同時実行数の設定
最大同時実行数の設定を使用して、SQS イベントソースのスケーリング動作を制御できます。最大同時実行数設定は、Amazon SQS イベントソースが呼び出せる関数の同時インスタンス数を制限します。最大同時実行数は、イベントソースレベルの設定です。1 つの関数に複数の Amazon SQS イベントソースをマップしている場合は、各イベントソースに個別の最大同時実行数を設定できます。最大同時実行数は、1 つのキューが関数の予約された同時実行のすべてを使用したり、アカウントの同時実行クォータの残りのすべてを使用したりしないようにするために使用できます。Amazon SQS イベントソースでの最大同時実行数の設定に料金はかかりません。
重要なのは、最大同時実行数と予約された同時実行は、2 つの独立した設定であるということです。最大同時実行数を、関数の予約された同時実行よりも多い数に設定しないでください。最大同時実行数を設定する場合は、関数の予約された同時実行数が、関数にマップされたすべての Amazon SQS イベントソースの合計最大同時実行数以上になるようにしてください。合計数未満になった場合は、Lambda がメッセージをスロットルする可能性があります。
ご使用のアカウントの同時実行クォータがデフォルト値の 1,000 に設定されている場合、最大同時実行数を指定しない限り、Amazon SQS イベントソースマッピングは、関数インスタンスの呼び出し数がこの値に達するまでスケールできます。
アカウントのデフォルトの同時実行クォータを引き上げると、Lambda が同時実行の関数インスタンスを新しいクォータまで呼び出せない場合があります。Lambda はデフォルトで、Amazon SQS イベントソースマッピングに対する同時実行の関数インスタンスの呼び出し数が最大の 1,250 に達するまでスケールできます。デフォルト値がユースケースに不十分な場合は、AWS サポートへ連絡し、ご使用のアカウントにおける Amazon SQS イベントソースマッピングの同時実行数の増加についてご相談ください。
注記
FIFO キューの場合、同時呼び出しの上限は、メッセージグループ ID の数 (messageGroupId
) または最大同時実行数の設定 (どちらか小さい方) です。例えば、メッセージグループ ID が 6 つあり、最大同時実行数が 10 に設定されている場合、関数は最大 6 回の同時呼び出しを行うことができます。
新規および既存の Amazon SQS イベントソースマッピングに最大同時実行数を設定できます。
Lambda コンソールを使用して最大同時実行数を設定する
Lambda コンソールの関数ページ
を開きます。 -
関数の名前を選択します。
-
[Function overview] (関数の概要) で [SQS] を選択します。選択すると、[Configuration] (設定) タブが開きます。
-
Amazon SQS トリガーを選択し、[Edit] (編集) を選択します。
-
[Maximum concurrency] (最大同時実行数) には、2 から 1,000 までの数値を入力します。最大同時実行数をオフにするには、ボックスを空のままにします。
-
[保存] を選択します。
AWS Command Line Interface(AWS CLI) を使用して最大同時実行数を設定する
--scaling-config
オプション付きの update-event-source-mapping
aws lambda update-event-source-mapping \ --uuid
"a1b2c3d4-5678-90ab-cdef-11111EXAMPLE"
\ --scaling-config'{"MaximumConcurrency":5}'
最大同時実行数をオフにするには、--scaling-config
に空の値を入力します。
aws lambda update-event-source-mapping \ --uuid
"a1b2c3d4-5678-90ab-cdef-11111EXAMPLE"
\ --scaling-config"{}"
Lambda API を使用して最大同時実行数を設定する
ScalingConfig オブジェクトを指定した CreateEventSourceMapping アクションまたは UpdateEventSourceMapping アクションを使用します。