Amazon Data Firehose でのデータ配信を理解する
Firehose ストリームにデータを送信すると、そのデータは選択した宛先に自動的に配信されます。次の表は、さまざまな宛先へのデータ配信について説明するものです。
デスティネーション | 詳細 |
---|---|
Amazon S3 |
Amazon S3 へのデータ配信の場合、Firehose は、Firehose ストリームのバッファリング設定に基づいて、複数の着信レコードを連結します。次に、Amazon S3 オブジェクトとしてレコードを Amazon S3 に配信します。デフォルトでは、Firehose は区切り文字なしでデータを連結します。レコード間に改行区切り文字を使用する場合は、[Firehose コンソール設定] または [API パラメータ] でこの機能を有効にすることで、改行区切り文字を追加できます。Firehose と Amazon S3 の宛先間のデータ配信は TLS (HTTPS) で暗号化されます。 |
Amazon Redshift |
Amazon Redshift へのデータ配信では、Firehose は最初に着信データを前に説明した形式で S3 バケットに配信します。次に Firehose は、Amazon Redshift COPY コマンドを発行して、S3 バケットから Amazon Redshift プロビジョンドクラスターまたは Amazon Redshift Serverless ワークグループにデータをロードします。Amazon Data Firehose が複数の着信レコードを Amazon S3 オブジェクトに連結した後に、Amazon S3 オブジェクトを Amazon Redshift プロビジョンドクラスターまたは Amazon Redshift Serverless ワークグループにコピーできることを確認します。詳細については、「Amazon Redshift COPY コマンドのデータ形式パラメータ」を参照してください。 |
OpenSearch Service と OpenSearch Serverless | OpenSearch Service と OpenSearch Serverless へのデータ配信では、Amazon Data Firehose は Firehose ストリームのバッファリング設定に基づいて着信レコードをバッファリングします。次に、OpenSearch Service または OpenSearch Serverless への一括リクエストを生成して、OpenSearch Service クラスターまたは OpenSearch Serverless コレクションに複数のレコードのインデックスを作成します。Amazon Data Firehose に送信する前に、レコードが UTF-8 でエンコードされ、1 行の JSON オブジェクトにフラット化されていることを確認します。また、1 秒ごとに設定される明示的なインデックスを使用して一括リクエストを行うには、OpenSearch Service クラスターの rest.action.multi.allow_explicit_index オプションを true (デフォルト) に設定する必要があります。詳細については、「Amazon OpenSearch Service デベロッパーガイド」の「OpenSearch Service Configure Advanced Options」を参照してください。 |
Splunk |
Splunk へのデータ配信の場合は、Amazon Data Firehose は送信するバイト数を連結します。データを改行文字などで区切る場合は、自分で挿入する必要があります。Splunk がそのような区切り記号を解析するように設定されていることを確認してください。S3 エラーバケット (S3 バックアップ) に配信されたデータを Splunk にリドライブするには、Splunk ドキュメント |
HTTP エンドポイント | サポートされているサードパーティーサービスプロバイダーが所有する HTTP エンドポイントへのデータ配信のために、統合された Amazon Lambda サービスを使用して、着信レコードをサービスプロバイダーの統合が想定している形式に一致する形式に変換する関数を作成できます。受信したレコード形式の詳細については、送信先に HTTP エンドポイントを選択したサードパーティーサービスプロバイダーにお問い合わせください。 |
Snowflake |
Snowflake へのデータ配信のために、Amazon Data Firehose は内部的に 1 秒間データをバッファリングし、Snowflake ストリーミング API オペレーションを使用して Snowflake にデータを挿入します。デフォルトでは、挿入したレコードは 1 秒ごとにフラッシュされ、Snowflake テーブルにコミットされます。挿入呼び出しを実行すると、Firehose は、データが Snowflake にコミットされるまでにかかる時間を測定する CloudWatch メトリクスを出力します。Firehose は現在、レコードペイロードとして単一の JSON 項目のみをサポートしており、JSON 配列をサポートしていません。入力ペイロードが有効な JSON オブジェクトであり、余分な二重引用符、引用符、エスケープ文字なしで適切に形成されていることを確認してください。 |
Firehose の宛先ごとに、独自のデータ配信の頻度があります。詳細については、「バッファリングのヒントを設定する」を参照してください。
重複レコード
Amazon Data Firehose は、データ配信に最低 1 回セマンティクスを使用します。データ配信がタイムアウトした場合など、状況によっては、元のデータ配信リクエストが最終的に通過すると、Amazon Data Firehose による配信の再試行が重複する可能性があります。これは、Apache Iceberg テーブルと Snowflake の宛先を除いて、Amazon Data Firehose がサポートするすべての宛先タイプに適用されます。