Lambda でのイベントポーラーのスケーリングモード
Kafka イベントソースマッピングのイベントポーラースケーリングについて、2 つのモードのいずれかを選択できます。
オンデマンドモード (デフォルト)
初めて Amazon MSK イベントソースを作成すると、Lambda は Kafka トピック内のすべてのパーティションを処理するために、デフォルトの数のイベントポーラーを割り当てます。Lambda は、メッセージ負荷に基づいてイベントポーラーの数を自動的にスケールアップまたはスケールダウンします。
Lambda は、1 分間隔でトピック内のすべてのパーティションのオフセットラグを評価します。オフセットラグが大きすぎる場合、パーティションは Lambda で処理できる速度よりも速くメッセージを受信します。必要に応じて、Lambda はトピックのイベントポーラーを追加または削除します。イベントポーラーを追加または削除するこの自動スケーリングプロセスは、評価から 3 分以内に実行されます。
ターゲットの Lambda 関数がスロットリングされると、Lambda はイベントポーラーの数を減らします。このアクションにより、イベントポーラーが関数から取得するメッセージ、および関数に送信するメッセージの数が減ることで、関数に対する負荷が軽減されます。
プロビジョンドモード
イベントソースマッピングのスループットを微調整する必要があるワークロードでは、プロビジョンドモードを使用できます。プロビジョンドモードでは、プロビジョニングされたイベントポーラーの最小数と最大数を定義します。これらのプロビジョニングされたイベントポーラーは、イベントソースマッピング専用であり、応答性の高い自動スケーリングによって予期しないメッセージスパイクを処理できます。パフォーマンス要件が厳しい Kafka ワークロードには、プロビジョンドモードを使用することをお勧めします。
Lambda のイベントポーラーは最大 5 MBps のスループットを処理できるコンピューティングユニットです。例えば、イベントソースの平均ペイロードが 1 MB で、平均関数所要時間が 1 秒であるとします。ペイロードで変換 (フィルタリングなど) が発生しない場合、1 つのポーラーが 5 MBps のスループットと 5 つの同時 Lambda 呼び出しをサポートできます。プロビジョニングモードを使用すると、追加コストが発生します。料金の見積もりについては、「AWS Lambda 料金
注記
プロビジョンドモードを使用する場合は、AWS PrivateLink VPC エンドポイントを作成したり、関連するアクセス許可をネットワーク設定の一部として付与したりする必要はありません。
プロビジョンドモードでは、イベントポーラーの最小数 (MinimumPollers
) の許容値の範囲は 1~200 です。イベントポーラーの最大数 (MaximumPollers
) の許容値の範囲は 1~2,000 です。MaximumPollers
は MinimumPollers
以上である必要があります。また、パーティション内での順序付き処理を維持するために、Lambda は MaximumPollers
をトピック内のパーティション数に制限します。
イベントポーラーの最小数および最大数に適切な値を選択する方の詳細については、「プロビジョンドモードを使用する際のベストプラクティスと考慮事項」を参照してください。
Amazon MSK イベントソースマッピングのプロビジョンドモードを設定するには、コンソールまたは Lambda API を使用できます。
既存の Amazon MSK イベントソースマッピングに対してプロビジョンドモードを設定する手順 (コンソール)
-
Lambda コンソールの [関数]
ページを開きます。 -
プロビジョンドモードを設定する Amazon MSK イベントソースマッピングを持つ関数を選択します。
-
[設定] タブを選択し、[トリガー] を選択します。
-
プロビジョンドモードを設定する Amazon MSK イベントソースマッピングを選択し、[編集] を選択します。
-
[イベントソースマッピング設定] で、[プロビジョンドモードの設定] を選択します。
-
[最小イベントポーラー数] に、1~200 の値を入力します。値を指定しない場合、Lambda はデフォルト値 1 を選択します。
-
[最大イベントポーラー数] に、1~2,000 の値を入力します。この値は、[最小イベントポーラー数] の値以上である必要があります。値を指定しない場合、Lambda はデフォルト値 200 を選択します。
-
-
[保存] を選択します。
EventSourceMappingConfiguration の ProvisionedPollerConfig オブジェクトを使用して、プログラムでプロビジョンドモードを設定できます。例えば、次の UpdateEventSourceMapping CLI コマンドは、MinimumPollers
値を 5、MaximumPollers
値を 100 に設定します。
aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{"MinimumPollers": 5, "MaximumPollers": 100}'
プロビジョニングモードを設定すると、ProvisionedPollers
メトリクスをモニタリングすることで、ワークロードのイベントポーラーの使用状況を確認できます。詳細については、「イベントソースマッピングメトリクス」を参照してください。
プロビジョンドモードを無効にしてデフォルト (オンデマンド) モードに戻すには、次の UpdateEventSourceMapping CLI コマンドを使用できます。
aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{}'
プロビジョンドモードを使用する際のベストプラクティスと考慮事項
イベントソースマッピングの最小および最大イベントポーラー数の最適な設定は、アプリケーションのパフォーマンス要件によって異なります。パフォーマンスプロファイルのベースラインを確立する際には、最初はデフォルトの最小イベントポーラー数から始めることをお勧めします。観測されたメッセージ処理パターンと望ましいパフォーマンスプロファイルに基づいて設定を調整します。
トラフィックの急増が発生しやすく、厳格なパフォーマンス要件があるワークロードの場合、メッセージの突然の急増を処理できるように、最小イベントポーラーを増やします。必要な最小イベントポーラー数を決定するには、ワークロードの 1 秒あたりのメッセージ数と平均ペイロードサイズを考慮し、1 つのイベントポーラーのスループットキャパシティ (最大 5 MBps) を参考にします。
パーティション内での順序付き処理を維持するために、Lambda は最大イベントポーラー数をトピック内のパーティション数に制限します。さらに、イベントソースマッピングがスケーリングできる最大イベントポーラー数は、関数の同時実行設定によって異なります。
プロビジョンドモードを有効にする際には、ネットワーク設定を更新して AWS PrivateLink VPC エンドポイントと関連するアクセス許可を削除します。