大きなレコードの処理 - Amazon Kinesis Data Streams

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

大きなレコードの処理

Amazon Kinesis Data Streams は、最大 10 メビバイト (MiB) のレコードをサポートします。この機能は、デフォルトの 1 MiB のレコードサイズ制限を超える断続的なデータペイロードを処理する場合に推奨されます。既存および新規に作成されたストリームのデフォルトの最大レコードサイズは 1 MiB に設定されています。

この機能は、断続的に大きなデータペイロードを処理する必要がある IoT アプリケーション、変更データキャプチャ (CDC) パイプライン、機械学習ワークフローに有用です。ストリームで大きなレコードの使用を開始するには、ストリームの最大レコードサイズ制限を更新します。

重要

1 シャードあたりのスループット制限 (書き込み 1 MB/秒、読み取り 2 MB/秒) は、大きなレコードサイズをサポートしても変更されません。Kinesis Data Streams は、1 MiB 以下のレコードをベースとしたトラフィックに加えて、断続的に発生する大きなレコードを処理できるように設計されています。継続的に大量の大きなレコードを取り込む用途向けには設計されていません。

大きなレコードを使用するようにストリームを更新する

Kinesis Data Streams で大きなレコードを処理するには、次の手順を実行します。
  1. Kinesis Data Streams コンソールに移動します。

  2. ストリームを選択し、[設定] タブを開きます。

  3. [最大レコードサイズ] の横にある [編集] をクリックします。

  4. 最大レコードサイズ (最大 10 MiB) を設定します。

  5. 変更内容を保存します。

この設定は、この Kinesis データストリームの最大レコードサイズのみを調整します。この上限を引き上げる前に、すべての下流アプリケーションが大きなレコードを処理できることを確認してください。

AWS CLI を使用してこの設定を更新することもできます。

aws kinesis update-max-record-size \ --stream-arn \ --max-record-size-in-ki-b 5000

大きなレコードでストリームのパフォーマンスを最適化する

大きなレコードは、全体のトラフィックの 2% 未満に維持することをお勧めします。1 つのストリーム内で、各シャードのスループットキャパシティは毎秒 1 MiB です。Kinesis Data Streams は、大きなレコードに対応するため、一時的に最大 10 MiB までバーストできますが、平均では毎秒 1 MiB に抑えられます。この大きなレコードをサポートするための容量は、ストリーム内で継続的に補充されます。補充の速度は、大きなレコードのサイズとベースラインレコードのサイズによって異なります。最良の結果を得るには、均一に分散されたパーティションキーを使用します。Kinesis のオンデマンドスケーリングの仕組みについて詳しくは、「オンデマンド標準モードの機能とユースケース」を参照してください。

大きなレコードによるスロットリングを軽減する

スロットリングを軽減するには
  1. プロデューサーアプリケーションに指数バックオフを伴う再試行ロジックを実装します。

  2. 利用可能なシャード全体に大きなレコードを分散させるために、ランダム化されたパーティションキーを使用します。

  3. 継続的に大きなレコードをストリーミングする場合は、ペイロードを Amazon S3 に保存し、メタデータ参照のみをストリームに送信します。詳細については、Processing large records with Amazon Kinesis Data Streams を参照してください。

Kinesis Data Streams API を使用して大きなレコードを処理する

大きなレコードのサポートでは、新しい API が 1 つ追加され、既存の 2 つのコントロールプレーン API が更新され、最大 10 MiB までのレコードを処理できるようになりました。

レコードサイズを変更するための API:

  • UpdateMaxRecordSize: 既存のストリームに対して最大 10 MiB までのレコードサイズ上限を設定します。

既存 API の更新点:

  • CreateStream: ストリーム作成時にレコードサイズ上限を設定できるオプションパラメータ MaxRecordSizeInKiB が追加されました。

  • DescribeStreamSummary: 現在のストリーム設定を表示するための MaxRecordSizeInKiB フィールドが返されます。

ここに挙げたすべての API は、既存のストリームとの下位互換性を維持しています。API ドキュメントの詳細については、Amazon Kinesis Data Streams Service API リファレンスを参照してください。

AWS 大きなレコードと互換性のあるコンポーネント

次の AWS コンポーネントは、大きなレコードと互換性があります。

コンポーネント 説明

AWS SDK

AWS SDK は、大規模なレコードの処理をサポートしています。 AWS SDKs で使用可能なメソッドを使用して、ストリームの最大レコードサイズを最大 10 MiB に更新できます。詳細については、AWS 「 SDK でこのサービスを使用する」を参照してください。

Kinesis Consumer Library (KCL)

バージョン 2.x 以降、KCL は大きなレコードの処理をサポートしています。大きなレコードのサポートを使用するには、ストリームの maxRecordSize を更新し、KCL を使用します。詳細については、Use Kinesis Client Library を参照してください。

Kinesis Producer Library (KPL)

バージョン 1.0.5 以降、KPL は大きなレコードの処理をサポートしています。大きなレコードのサポートを使用するには、ストリームの maxRecordSize を更新し、KPL を使用します。詳細については、Develop producers using the Amazon Kinesis Producer Library (KPL) を参照してください。

Amazon EMR

Apache Spark を使用した Amazon EMR は、Kinesis Data Streams の上限 (10 MiB) までの大きなレコードの処理をサポートしています。大きなレコードのサポートを使用するには、readStream 関数を使用します。詳細については、Amazon EMR and Amazon Kinesis integration を参照してください。

Amazon Data Firehose

Kinesis Data Streams と併用する場合、Amazon Data Firehose の大きなレコードの動作は配信先によって異なります。

  • Amazon S3: 追加設定なしで大きなレコードの配信がサポートされます。大きなレコードの配信は、データ形式変換を使用する場合には、Firehose でサポートされますが、動的パーティショニングを使用する場合、Firehose ではサポートされません。

  • Lambda: Firehose が下流で Lambda 関数をトリガーする場合、大きなレコードの使用は推奨されません。これにより、断続的な障害が発生する可能性があります。

  • HTTP: Firehose では大きなレコードの配信はサポートされていません。

  • Snowflake: Firehose では大きなレコードの配信はサポートされていません。

  • Amazon Redshift: Firehose では大きなレコードの配信はサポートされていません。

大きなレコードを Snowflake または Redshift に配信する必要がある場合は、まず Amazon S3 にデータを配信します。その後、抽出、変換、ロード (ETL) プロセスを使用してデータをロードします。その他の配信先については、本番環境にスケールする前に概念実証 (PoC) 環境で大きなレコードの動作を確認してください。大きなレコードの処理方法は配信先によって異なります。

AWS Lambda

AWS Lambda は最大 6 MiBs のペイロードをサポートします。この上限には、base64 エンコードに変換された Kinesis ペイロードと、イベントソースマッピング (ESM) に関連付けられたメタデータが含まれます。6 MiB 未満のレコードは、追加設定なしで ESM を使用して処理されます。6 MiB を超えるレコードは、Lambda が失敗時の送信先を使用して処理します。処理上限を超えるレコードを扱うには、ESM を使用して失敗時の送信先を設定する必要があります。失敗時の送信先に送信される各イベントは、失敗した呼び出しに関するメタデータを含む JSON ドキュメントです。

レコードサイズにかかわらず、ESM 内で失敗時の送信先を作成することをお勧めします。これにより、いかなるレコードも破棄されないことが保証されます。詳細については、「失敗した呼び出しの送信先の設定」を参照してください。

Amazon Redshift

Amazon Redshift は、Kinesis Data Streams からデータをストリーミングする場合、1 MiB 未満のレコードサイズのみをサポートしています。この上限を超えるレコードは処理されません。処理されなかったレコードは sys_stream_scan_errors としてログに記録されます。詳細については、SYS_STREAM_SCAN_ERRORS を参照してください。

Flink connector for Kinesis Data Streams

Kinesis Data Streams からデータを取り込む方法には、Kinesis ソースコネクタ と Kinesis シンクコネクタ の 2 つのアプローチがあります。ソースコネクタは 1 MiB 未満から最大 10 MiB までのレコードの処理をサポートしています。1 MiB を超えるレコードにはシンクコネクタを使用しないでください。詳細については、Use connectors to move data in Amazon Managed Service for Apache Flink with the DataStream API を参照してください。

大きなレコードがサポートされるリージョン

この Amazon Kinesis Data Streams 機能は、次の AWS リージョンでのみ使用できます。

AWS リージョン リージョン名

eu-north-1

欧州 (ストックホルム)

me-south-1

中東 (バーレーン)

ap-south-1

アジアパシフィック (ムンバイ)

eu-west-3

欧州 (パリ)

ap-southeast-3

アジアパシフィック (ジャカルタ)

us-east-2

米国東部 (オハイオ)

af-south-1

アフリカ (ケープタウン)

eu-west-1

欧州 (アイルランド)

me-central-1

中東 (アラブ首長国連邦)

eu-central-1

欧州 (フランクフルト)

sa-east-1

南米 (サンパウロ)

ap-east-1

アジアパシフィック (香港)

ap-south-2

アジアパシフィック (ハイデラバード)

us-east-1

米国東部 (バージニア北部)

ap-northeast-2

アジアパシフィック (ソウル)

ap-northeast-3

アジアパシフィック (大阪)

eu-west-2

欧州 (ロンドン)

ap-southeast-4

アジアパシフィック (メルボルン)

ap-northeast-1

アジアパシフィック (東京)

us-west-2

米国西部 (オレゴン)

us-west-1

米国西部 (北カリフォルニア)

ap-southeast-1

アジアパシフィック (シンガポール)

ap-southeast-2

アジアパシフィック (シドニー)

il-central-1

イスラエル (テルアビブ)

ca-central-1

カナダ (中部)

ca-west-1

カナダ西部 (カルガリー)

eu-south-2

欧州 (スペイン)

cn-northwest-1

中国 (寧夏)

eu-central-2

欧州 (チューリッヒ)

us-gov-east-1

AWS GovCloud (米国東部)

us-gov-west-1

AWS GovCloud (米国西部)