

# SQS イベントソースマッピングのスケーリング動作の設定
<a name="services-sqs-scaling"></a>

Amazon SQS イベントソースマッピングのスケーリング動作は、最大同時実行数の設定またはプロビジョンドモードを有効にすることで制御できます。これらは相互に排他的なオプションです。

デフォルトでは、Lambda はメッセージ量に基づいてイベントポーラーを自動的にスケーリングします。プロビジョンドモードを有効にすると、予想されるトラフィックパターンを処理する準備ができている専用ポーリングリソースの最小数と最大数を割り当てます。これにより、イベントソースマッピングのパフォーマンスを 2 つの方法で最適化できます。
+ 標準モード (デフォルト): Lambda は、少数のポーラーから始めてスケーリングを自動的に管理し、ワークロードに基づいてスケールアップまたはスケールダウンします。
+ プロビジョンドモード: 最小制限と最大制限で専用ポーリングリソースを設定し、スケーリングを 3 倍高速化、処理容量を最大 16 倍拡張できます。

標準キューの場合、Lambda は[ロングポーリング](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html#sqs-long-polling)を使用して、キューがアクティブになるまでキューをポーリングします。メッセージが利用可能な場合、Lambda は、関数を 5 回同時に呼び出すことで、一度に 5 つのバッチの処理を開始します。メッセージがまだ利用可能な場合、Lambda はバッチを読み込むプロセスの数を 1 分あたり最大 300 インスタンスまで増やします。イベントソースマッピングによって同時に処理できるバッチの最大数は 1,250 です。トラフィックが少ない場合、Lambda は処理を 5 つの同時実行呼び出しにスケールバックして、わずか 2 つの同時実行呼び出しに最適化できるため、Amazon SQS 呼び出しとそれに対応するコストを削減することができます。ただし、この最適化は、最大同時実行数設定を有効にしている場合には使用できません。

FIFO キューの場合、Lambda は、受信した順序でメッセージを関数に送信します。FIFO キューにメッセージを送信する場合、[メッセージグループ ID](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagegroupid-property.html) を指定します。Amazon SQS は、同じグループ内のメッセージが Lambda に順番に配信されるようにします。Lambda がメッセージをバッチに読み込むとき、各バッチには複数のメッセージグループからのメッセージが含まれることがありますが、メッセージの順序は維持されます。関数がエラーを返す場合、その関数は、Lambda が同じグループから追加のメッセージを受信する前に、対象メッセージですべての再試行を試みます。

プロビジョンドモードを使用する場合、各イベントポーラーは最大 1 MB/秒のスループット、最大 10 回の同時呼び出し、または最大 10 の Amazon SQS ポーリング API コールを処理できます。Lambda は、設定された最小値と最大値の間でイベントポーラーの数をスケーリングし、1 分あたり最大 1,000 個の同時実行数をすばやく追加して、Amazon SQS イベントの一貫した低レイテンシー処理を提供します。プロビジョニングモードを使用すると、追加コストが発生します。料金の詳細については、「[AWS Lambda の料金](https://aws.amazon.com/lambda/pricing/)」を参照してください。各イベントポーラーは、1 秒あたり最大 10 [のポーリングで SQS キューへのロング](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html)ポーリングを使用します。これにより、SQS API リクエストのコストが発生します。詳細については、「[Amazon SQS の料金](https://aws.amazon.com/sqs/pricing/ )」を参照してください。これらのオプションは一緒に使用できないため、最大同時実行設定を使用するのではなく、これらの最小および最大イベントポーラー設定を使用してスケーリングと同時実行を制御します。

**注記**  
最大同時実行数設定とプロビジョンドモードを同時に使用することはできません。プロビジョンドモードを有効にすると、イベントポーラーの最小数と最大数を通じて Amazon SQS イベントソースマッピングのスケーリングと同時実行を制御します。

## Amazon SQS イベントソースの最大同時実行数の設定
<a name="events-sqs-max-concurrency"></a>

最大同時実行数の設定を使用して、SQS イベントソースのスケーリング動作を制御できます。最大同時実行数は、プロビジョンドモードを有効にして使用することはできません。最大同時実行数設定は、Amazon SQS イベントソースが呼び出せる関数の同時インスタンス数を制限します。最大同時実行数は、イベントソースレベルの設定です。1 つの関数に複数の Amazon SQS イベントソースをマップしている場合は、各イベントソースに個別の最大同時実行数を設定できます。最大同時実行数は、1 つのキューが関数の[予約された同時実行](configuration-concurrency.md)のすべてを使用したり、[アカウントの同時実行クォータ](gettingstarted-limits.md)の残りのすべてを使用したりしないようにするために使用できます。Amazon SQS イベントソースでの最大同時実行数の設定に料金はかかりません。

重要なのは、最大同時実行数と予約された同時実行は、2 つの独立した設定であるということです。最大同時実行数を、関数の予約された同時実行よりも多い数に設定しないでください。最大同時実行数を設定する場合は、関数の予約された同時実行数が、関数にマップされたすべての Amazon SQS イベントソースの合計最大同時実行数以上になるようにしてください。合計数未満になった場合は、Lambda がメッセージをスロットルする可能性があります。

ご使用のアカウントの同時実行クォータがデフォルト値の 1,000 に設定されている場合、最大同時実行数を指定しない限り、Amazon SQS イベントソースマッピングは、関数インスタンスの呼び出し数がこの値に達するまでスケールできます。

アカウントのデフォルトの同時実行クォータを引き上げると、Lambda が同時実行の関数インスタンスを新しいクォータまで呼び出せない場合があります。Lambda はデフォルトで、Amazon SQS イベントソースマッピングに対する同時実行の関数インスタンスの呼び出し数が最大の 1,250 に達するまでスケールできます。デフォルト値がユースケースに不十分な場合は、AWS サポートへ連絡し、ご使用のアカウントにおける Amazon SQS イベントソースマッピングの同時実行数の増加についてご相談ください。

**注記**  
FIFO キューの場合、同時呼び出しの上限は、[メッセージグループ ID](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagegroupid-property.html) の数 (`messageGroupId`) または最大同時実行数の設定 (どちらか小さい方) です。例えば、メッセージグループ ID が 6 つあり、最大同時実行数が 10 に設定されている場合、関数は最大 6 回の同時呼び出しを行うことができます。

新規および既存の Amazon SQS イベントソースマッピングに最大同時実行数を設定できます。

**Lambda コンソールを使用して最大同時実行数を設定する**

1. Lambda コンソールの[関数ページ](https://console.aws.amazon.com/lambda/home#/functions)を開きます。

1. 関数の名前を選択します。

1. **[Function overview]** (関数の概要) で **[SQS]** を選択します。選択すると、**[Configuration]** (設定) タブが開きます。

1. Amazon SQS トリガーを選択し、**[Edit]** (編集) を選択します。

1. **[Maximum concurrency]** (最大同時実行数) には、2 から 1,000 までの数値を入力します。最大同時実行数をオフにするには、ボックスを空のままにします。

1. **[保存]** を選択します。

**AWS Command Line Interface(AWS CLI) を使用して最大同時実行数を設定する**  
`--scaling-config` オプション付きの [update-event-source-mapping](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-event-source-mapping.html) コマンドを使用します。例:

```
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](https://docs.aws.amazon.com/lambda/latest/api/API_ScalingConfig.html) オブジェクトを指定した [CreateEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_CreateEventSourceMapping.html) アクションまたは [UpdateEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateEventSourceMapping.html) アクションを使用します。