Lambda でのイベントポーラーのスケーリングモード - AWS Lambda

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 です。MaximumPollersMinimumPollers 以上である必要があります。また、パーティション内での順序付き処理を維持するために、Lambda は MaximumPollers をトピック内のパーティション数に制限します。

イベントポーラーの最小数および最大数に適切な値を選択する方の詳細については、「プロビジョンドモードを使用する際のベストプラクティスと考慮事項」を参照してください。

Amazon MSK イベントソースマッピングのプロビジョンドモードを設定するには、コンソールまたは Lambda API を使用できます。

既存の Amazon MSK イベントソースマッピングに対してプロビジョンドモードを設定する手順 (コンソール)
  1. Lambda コンソールの [関数] ページを開きます。

  2. プロビジョンドモードを設定する Amazon MSK イベントソースマッピングを持つ関数を選択します。

  3. [設定] タブを選択し、[トリガー] を選択します。

  4. プロビジョンドモードを設定する Amazon MSK イベントソースマッピングを選択し、[編集] を選択します。

  5. [イベントソースマッピング設定] で、[プロビジョンドモードの設定] を選択します。

    • [最小イベントポーラー数] に、1~200 の値を入力します。値を指定しない場合、Lambda はデフォルト値 1 を選択します。

    • [最大イベントポーラー数] に、1~2,000 の値を入力します。この値は、[最小イベントポーラー数] の値以上である必要があります。値を指定しない場合、Lambda はデフォルト値 200 を選択します。

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

EventSourceMappingConfigurationProvisionedPollerConfig オブジェクトを使用して、プログラムでプロビジョンドモードを設定できます。例えば、次の 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 エンドポイントと関連するアクセス許可を削除します。