Amazon Kinesis Data Firehose データ配信ストリーム - Amazon Kinesis Data Firehose

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

Amazon Kinesis Data Firehose データ配信ストリーム

データが配信ストリームに送信された後は、選択した送信先に自動的に配信されます。

重要

Kinesis Producer Library (KPL) を使用して Kinesis データストリームにデータを書き込む場合、集約を使用してその Kinesis データストリームに書き込むレコードを結合できます。その後そのデータストリームを Kinesis Data Firehose 配信ストリームのソースとして使用する場合、Kinesis Data Firehose はレコードの集約を解除してから送信先に配信します。データを変換するように配信ストリームを設定する場合、Kinesis Data Firehose はレコードの集約を解除してから AWS Lambda に配信します。詳細については、「Kinesis Producer Library を使用した Amazon Kinesis Data Streams プロデューサーの開発」および Amazon Kinesis Data Streams 開発者ガイドの「集約」を参照してください。

データ配信形式

Amazon Simple Storage Service (Amazon S3) へのデータ配信の場合、Kinesis Data Firehose は、配信ストリームのバッファ設定に基づいて、複数の受信レコードを連結します。次に、Amazon S3 オブジェクトとしてレコードを Amazon S3 に配信します。必要に応じて Kinesis Data Firehose に送信する前に、各レコードへの末尾にレコード区切り文字を追加することを推奨します。これで、配信された Amazon S3 オブジェクトをレコードに個々に分割できるようになります。

Amazon Redshift へのデータ配信では、Kinesis Data Firehose は最初に受信データを前に説明した形式で S3 バケットに配信します。次に Kinesis Data Firehose は、Amazon Redshift COPY コマンドを発行して、S3 バケットから Amazon Redshift クラスターにデータをロードします。Kinesis Data Firehose が複数の受信レコードを Amazon S3 オブジェクトに連結した後、Amazon S3 オブジェクトを Amazon Redshift クラスターにコピーできることを確認します。詳細については、「Amazon Redshift COPY コマンドのデータ形式パラメータ」を参照してください。

へのデータ配信用OpenSearchKinesis Data Firehose は受信レコードを配信ストリームのバッファリング設定に基づいてバッファします。次に、OpenSearch複数のレコードをインデックス化するための一括リクエストをサービスします。OpenSearchサービスクラスター。Kinesis Data Firehose に送信する前に、レコードが UTF-8 でエンコードされ、1 行の JSON オブジェクトにフラット化されていることを確認します。また、rest.action.multi.allow_explicit_indexあなたのオプションOpenSearch1 秒ごとに設定される明示的なインデックスを使用して一括リクエストを行うには、サービスクラスターを true (デフォルト) に設定する必要があります。詳細については、「」を参照してください。OpenSearch[サービスの設定] [詳細オプションアマゾンOpenSearchサービス開発者ガイドの最初のリリース

Splunk へのデータ配信の場合は、Kinesis Data Firehose は送信するバイト数を連結します。データを改行文字などで区切る場合は、自分で挿入する必要があります。Splunk がそのような区切り記号を解析するように設定されていることを確認してください。

サポートされているサードパーティーサービスプロバイダーが所有する HTTP エンドポイントにデータを配信する場合、統合された Amazon Lambda サービスを使用して、受信レコードをサービスプロバイダーの統合が想定している形式に一致する形式に変換する関数を作成できます。受信したレコード形式の詳細については、送信先に HTTP エンドポイントを選択したサードパーティーサービスプロバイダーにお問い合わせください。

データ配信の頻度

Kinesis Data Firehose の送信先ごとに、独自のデータ配信の頻度があります。

[Amazon S3]

Amazon S3 へのデータ配信の頻度は、配信ストリームで設定した Amazon S3 の [Buffer size (バッファサイズ)] および [Buffer interval (バッファ間隔)] の値によって決まります。Kinesis Data Firehose は受信データをバッファしてから、Amazon S3 に配信します。Amazon S3 の [Buffer size (バッファサイズ)] (1~128 MB) または [Buffer interval (バッファ間隔)] (60~900 秒) の値を設定できます。最初に満たした条件によって、Amazon S3 へのデータ配信がトリガーされます。送信先へのデータ配信が配信ストリームへのデータ書き込みよりも遅れると、Kinesis Data Firehose はバッファサイズを動的に引き上げます。その後、遅れを取り戻すことができ、すべてのデータが送信先に適切に配信されます。

Amazon Redshift

Amazon S3 から Amazon Redshift へのデータの COPY オペレーションの頻度は、Amazon Redshift クラスターが COPY コマンドを終了できる速度によって決まります。まだコピーするデータがある場合、前の COPY コマンドが Amazon Redshift によって正常に終了するとすぐに、Kinesis Data Firehose は新しい COPY コマンドを発行します。

アマゾンOpenSearchサービス

へのデータ配信の頻度OpenSearchサービスは、OpenSearchサービスバッファサイズそしてバッファ間隔配信ストリームに対して構成した値。Kinesis Data Firehose は受信データをバッファしてから、OpenSearchサービス。次の値を設定できます。OpenSearchサービスバッファサイズ(1—100 MB) またはバッファ間隔(60 ~ 900 秒)、最初に満たした条件によって、へのデータ配信がトリガーされます。OpenSearchサービス。

Splunk

Kinesis Data Firehose は受信データをバッファしてから、Splunk に配信します。バッファサイズは 5 MB、バッファ間隔は 60 秒です。最初に満たした条件によって、Splunk へのデータ配信がトリガーされます。バッファサイズと間隔は設定できません。これらの数値は最適化されています。

HTTP エンドポイント送信先

Kinesis Data Firehose は、受信データをバッファしてから、指定した HTTP エンドポイント送信先に配信します。送信先の推奨バッファサイズは、サービスプロバイダーによって異なります。たとえば、Datadog の推奨されるバッファサイズは 4 です。MiBsNew Relic と Sumo Logic の推奨されるバッファサイズは 1 MiB です。推奨されるバッファサイズの詳細については、データ送信先として選択したエンドポイントのサードパーティーサービスプロバイダーにお問い合わせください。

データ配信の失敗の処理

Kinesis Data Firehose の送信先ごとに、独自のデータ配信の失敗処理があります。

[Amazon S3]

S3 バケットへのデータ配信は、さまざまな理由で失敗する場合があります。たとえば、バケットが存在しない、Kinesis Data Firehose が引き受ける IAM ロールにバケットへのアクセス権がない、ネットワークの障害、類似したイベントなどの理由があります。そのような状況では、Kinesis Data Firehose は配信が成功するまで最大 24 時間にわたり再試行し続けます。Kinesis Data Firehose の最大データ保存時間は 24 時間です。データ配信が 24 時間を超えて失敗した場合、データは失われます。

Amazon Redshift

Amazon Redshift が送信先の場合、配信ストリームの作成時に、再試行の期間 (0~7200 秒) を指定できます。

Amazon Redshift クラスターへのデータ配信は、いくつかの理由で失敗する場合があります。たとえば、配信ストリームのクラスター設定が正しくない、クラスターがメンテナンス中である、ネットワークの障害の理由があります。そのような状況では、Kinesis Data Firehose は指定された期間にわたって、その特定のバッチの Amazon S3 オブジェクトをスキップします。スキップされたオブジェクトの情報は、マニフェストファイルとして errors/ フォルダーの S3 バケットに配信されます。この情報は手動のバックフィルに使用できます。データを手動でマニフェストファイルにコピーする方法の詳細については、「マニフェストを使用し、データファイルを指定する」を参照してください。

アマゾンOpenSearchサービス

向けのOpenSearch送信先の場合は、配信ストリームの作成時に、再試行 (0~7200 秒) を指定できます。

お客様へのデータ配信OpenSearchサービスクラスタは、いくつかの理由で失敗する場合があります。たとえば、間違ったものがあるとします。OpenSearchデリバリーストリームのサービスクラスタ構成、OpenSearch保守中のサービスクラスター、ネットワーク障害、類似のイベント。そのような状況では、Kinesis Data Firehose は指定された期間にわたって再試行してから、その特定のインデックスリクエストをスキップします。スキップされたドキュメントは AmazonOpenSearchService_failed/ フォルダーの S3 バケットに配信され、手動のバックフィルに使用できます。各ドキュメントの JSON 形式は以下のとおりです。

{ "attemptsMade": "(number of index requests attempted)", "arrivalTimestamp": "(the time when the document was received by Firehose)", "errorCode": "(http error code returned by OpenSearch Service)", "errorMessage": "(error message returned by OpenSearch Service)", "attemptEndingTimestamp": "(the time when Firehose stopped attempting index request)", "esDocumentId": "(intended OpenSearch Service document ID)", "esIndexName": "(intended OpenSearch Service index name)", "esTypeName": "(intended OpenSearch Service type name)", "rawData": "(base64-encoded document data)" }
Splunk

Kinesis Data Firehose がデータを Splunk に送信すると、Splunk からの送達確認を待機します。エラーが発生した場合、または確認タイムアウト期間内に確認が到着しない場合、Kinesis Data Firehose で再試行期間カウンターが開始されます。再試行期間が終わるまで再試行が続けられます。その後、Kinesis Data Firehose はデータ配信が失敗したとみなしてデータを Amazon S3 バケットにバックアップします。

Kinesis Data Firehose がデータを Splunk に送信するたびに、初回か再試行かにかかわらず、送達確認タイムアウトカウンターが再度開始されます。Splunk から送達確認が来るのを待機します。再試行期間が切れた場合でも、Kinesis Data Firehose は送達確認が到着するか送達確認タイムアウトに達するまで送達確認を待機し続けます。送達確認がタイムアウトすると、Kinesis Data Firehose は再試行カウンターの残り時間があるかどうかをチェックして判別します。残り時間がある場合は、確認が到着するか再試行時間が切れたと判断されるまで再試行されロジックが繰り返されます。

送達確認の受信失敗だけが、発生する可能性のあるデータ配信エラーのタイプではありません。他のタイプのデータ配信エラーの詳細については、「Splunk データ配信エラー」を参照してください。再試行期間が 0 より大きい場合、すべてのデータ配信エラーで再試行ロジックがトリガーされます。

以下に、エラーレコードの例を示します。

{ "attemptsMade": 0, "arrivalTimestamp": 1506035354675, "errorCode": "Splunk.AckTimeout", "errorMessage": "Did not receive an acknowledgement from HEC before the HEC acknowledgement timeout expired. Despite the acknowledgement timeout, it's possible the data was indexed successfully in Splunk. Kinesis Firehose backs up in Amazon S3 data for which the acknowledgement timeout expired.", "attemptEndingTimestamp": 13626284715507, "rawData": "MiAyNTE2MjAyNzIyMDkgZW5pLTA1ZjMyMmQ1IDIxOC45Mi4xODguMjE0IDE3Mi4xNi4xLjE2NyAyNTIzMyAxNDMzIDYgMSA0MCAxNTA2MDM0NzM0IDE1MDYwMzQ3OTQgUkVKRUNUIE9LCg==", "EventId": "49577193928114147339600778471082492393164139877200035842.0" }
HTTP エンドポイント送信先

Kinesis Data Firehose が HTTP エンドポイントの送信先にデータを送信すると、この送信先からの応答を待ちます。エラーが発生した場合、または応答タイムアウト期間内にレスポンスが到着しない場合、Kinesis Data Firehose で再試行の期間カウンターが開始されます。再試行期間が終わるまで再試行が続けられます。その後、Kinesis Data Firehose はデータ配信が失敗したとみなしてデータを Amazon S3 バケットにバックアップします。

Kinesis Data Firehose がデータを HTTP エンドポイントの送信先に送信するたびに、初回か再試行かにかかわらず、応答タイムアウトカウンターを再起動します。次に、HTTP エンドポイントの送信先から応答が到着するのを待ちます。再試行期間が切れた場合でも、Kinesis Data Firehose は引き続き応答が到着するか応答タイムアウトに達するまで応答を待機し続けます。応答がタイムアウトすると、Kinesis Data Firehose は再試行カウンターの残り時間があるかどうかをチェックして判別します。残り時間がある場合は、応答が到着するか再試行時間が切れたと判断されるまで再試行されロジックが繰り返されます。

応答の受信失敗だけが、発生する可能性のあるデータ配信エラーのタイプではありません。他のタイプのデータ配信エラーの詳細については、「HTTP エンドポイントデータ配信エラー」を参照してください。

以下に、エラーレコードの例を示します。

{ "attemptsMade":5, "arrivalTimestamp":1594265943615, "errorCode":"HttpEndpoint.DestinationException", "errorMessage":"Received the following response from the endpoint destination. {"requestId": "109777ac-8f9b-4082-8e8d-b4f12b5fc17b", "timestamp": 1594266081268, "errorMessage": "Unauthorized"}", "attemptEndingTimestamp":1594266081318, "rawData":"c2FtcGxlIHJhdyBkYXRh", "subsequenceNumber":0, "dataId":"49607357361271740811418664280693044274821622880012337186.0" }

Amazon S3 オブジェクト名の形式

Kinesis Data Firehose は、YYYY/MM/dd/HH 形式で UTC 時間のプレフィックスを追加してから、書き込みオブジェクトを Amazon S3 に追加します。このプレフィックスはバケットで論理的階層を作成します。それぞれのフォワードスラッシュ (/) は階層でレベルを作成します。カスタムプレフィックスを指定することで、この構造を変更できます。カスタムプレフィックスを指定する方法については、「Amazon S3 オブジェクトのカスタムプレフィックス」を参照してください。

Amazon S3 オブジェクト名はパターン DeliveryStreamName-DeliveryStreamVersion-YYYY-MM-dd-HH-MM-SS-RandomString に従います。ここで、DeliveryStreamVersion1 で始まり、Kinesis Data Firehose 配信ストリームの設定が変更されるたびに、1 ずつ増えます。配信ストリーム設定 (例: S3 バケットの名前、バッファリングのヒント、圧縮、暗号化) は変更できます。これを行うには、Kinesis Data Firehose コンソールまたはUpdateDestinationAPI オペレーション。

[] のインデックスのローテーションOpenSearchサービスの送信先

向けのOpenSearchサービスの送信先の場合は、次の 5 つのオプションの 1 つから、時間ベースのインデックスのローテーションオプションを指定できます。NoRotation,OneHour,OneDay,OneWeek, またはOneMonth

選択するローテーションオプションに基づき、Kinesis Data Firehose によって、UTC の到着タイプスタンプが指定されたインデックス名に追加されます。追加されたタイムスタンプは、それに応じてローテーションされます。次の例は、で作成されるインデックス名を示しています。OpenSearch各インデックスのローテーションオプションのサービス。指定されたインデックス名はmyindex到着タイムスタンプは2016-02-25T13:00:00Z

RotationPeriod IndexName
NoRotation myindex
OneHour myindex-2016-02-25-13
OneDay myindex-2016-02-25
OneWeek myindex-2016-w08
OneMonth myindex-2016-02
注記

OneWeek オプションでは、Data Firehose は <YEAR>-w<WEEK NUMBER> の形式を使用してインデックスを自動作成します (たとえば、2020-w33)。ここで、週数は UTC 時間を使用し、次の米国の表記規則に従って計算されます。

  • 週は日曜日から始まります

  • その年の最初の週は、今年の土曜日を含む最初の週です。

AWS アカウント全体および HTTP エンドポイントの送信先の AWS リージョン全体に配信

Kinesis Data Firehose は、AWS アカウント全体で HTTP エンドポイントの送信先へのデータ配信をサポートしています。Kinesis Data Firehose 配信ストリームと、送信先として選択した HTTP エンドポイントは、異なる AWS アカウントにある可能性があります。

Kinesis Data Firehose は、AWS リージョン全体で HTTP エンドポイントの送信先へのデータ配信もサポートしています。一方の AWS リージョンの配信ストリームから、他方の AWS リージョンの HTTP エンドポイントにデータを配信できます。また、配信ストリームから AWS リージョン外の HTTP エンドポイントの送信先にデータを配信することもできます。たとえば、HTTP エンドポイント URL を目的の送信先に設定して、独自のオンプレミスサーバーに設定します。これらのシナリオでは、配信コストに追加のデータ転送料金が加算されます。詳細については、「オンデマンド料金」ページの「データ転送」セクションを参照してください。

重複レコード

Kinesis Data Firehose が使用at-least-onceデータ配信のセマンティクス。データ配信がタイムアウトした場合など、状況によっては、元のデータ配信リクエストが最終的に通過すると、Kinesis Data Firehose による配信の再試行が重複する可能性があります。これは、Kinesis Data Firehose がサポートするすべての送信先タイプに当てはまります。