汎用 またはストリーミング ETL コンセプト

Q: ストリーミング ETL とは何ですか?

ストリーミング ETL とは、リアルタイムのデータをある場所から別の場所へと処理し移動することです。ETL とは、データベース関数の抽出、変換、ロードの略です。抽出とは、何らかのソースからデータを収集することです。変換とは、そのデータで行われるあらゆる処理のことです。ロードとは、処理されたデータを、ウェアハウスやデータレイク、分析ツールなどの送信先に送ることです。

Q: Amazon Kinesis Data Firehose とは何ですか?

Kinesis Data Firehose とは、ストリーミング ETL ソリューションです。ストリーミングデータをデータストアや分析ツールにロードする最も簡単な方法です。ストリーミングデータをキャプチャして変換し、Amazon S3、Amazon Redshift、Amazon OpenSearch Service、Splunk にロードして、現在お使いのビジネスインテリジェンスツールやダッシュボードでほぼリアルタイムに分析できます。フルマネージドサービスのため、データスループットに応じて自動的にスケールされ、継続的な管理は不要です。ロード前にデータのバッチ処理、圧縮処理、暗号化が行われるため、送信先でのストレージ量を最小化し、セキュリティを強化できます。

Q: Kinesis Data Firehose のソースとは何ですか?

ソースはストリーミングデータが継続的に生成され、キャプチャされるところです。例えば、Amazon EC2 インスタンスで実行中のログ記録サーバー、モバイルデバイスで実行中のアプリケーション、IoT デバイスのセンサーなどがソースになります。Kinesis Data Firehose にソースを接続するには、次を使用します。1) Amazon Kinesis Data Firehose API (AWS SDK for Java、.NET、Node.js、Python、Ruby を使用)。2) Kinesis Data Stream (ここで、Kinesis Data Firehose が、既存の Kinesis データストリームから簡単にデータを読み取り、Kinesis Data Firehose の送信先にロードします) 。3) Amazon MSK (Kinesis Data Firehose が既存の Amazon MSK クラスターから簡単にデータを読み取り、Amazon S3 バケットにロードします)。4) AWS でネイティブにサポートされているサービス (AWS CloudWatch、AWS EventBridge、AWS IOT、または AWS Pinpoint など)。完全なリストは、「Amazon Kinesis Data Firehose デベロッパーガイド」をご参照ください。5) Kinesis Agents (スタンドアローンの Java ソフトウェアアプリケーションであり、一連のファイルを継続的にモニタリングし、新しいデータをストリームに送信します)。6) Fluentbit (オープンソースのログプロセッサとフォワーダー)。7) AWS Lambda (プロビジョニングや管理を行うことなく、コードを実行できるサーバーレスのコンピューティングサービス)。トリガーされたイベントに基づいて、S3 または DynamoDB から Kinesis Data Firehose にトラフィックを送信するために、Lambda 関数を書き込むことができます。

Q: Kinesis Data Firehose の送信先とは何ですか?

送信先はデータが配信されるデータストアです。Kinesis Data Firehose で現在サポートされている送信先は、Amazon S3、Amazon Redshift、Amazon OpenSearch Service、Splunk、Datadog、New Relic、Dynatrace、Sumo Logic、LogicMonitor、MongoDB、HTTP エンドポイントです。

Q: Kinesis Data Firehose では何を管理できますか?

Kinesis Data Firehose では、データをキャプチャして Amazon S3、Amazon Redshift、Amazon OpenSearch Service、Splunk にロードするために必要な、基盤となるインフラストラクチャ、ストレージ、ネットワーク、設定すべてを管理できます。このプロセスを管理するのに、ハードウェアとソフトウェアのプロビジョニング、デプロイ、継続的なメンテナンスについて心配したり、その他のアプリケーションの書き込みも必要もありません。また、Kinesis Data Firehose は伸縮自在にスケールするため、何らかの操作や、関係するデベロッパーのオーバーヘッドは不要です。さらに、Kinesis Data Firehose では、AWS リージョン内にある 3 つの拠点でデータが同期的に複製されるため、データ転送時の高い可用性と耐久性を確保できます。

Q: Kinesis Data Firehose を使用するにはどうすればよいですか?

Amazon Web Services にサインアップ後、以下のステップで Kinesis Data Firehose の使用をスタートできます。

  • Firehose コンソールを使用するか、CreateDeliveryStream オペレーションを実行して、Kinesis Data Firehose 配信ストリームを作成します。配信ストリーム内に AWS Lambda 関数を設定して、raw データを作成および変換してからデータをロードすることもできます。
  • Amazon Kinesis Agent または Firehose API を使用して、配信ストリームにデータを継続的に送信するようデータ生成元を設定します。
  • Firehose により、指定した送信先に対してデータが自動的かつ継続的にロードされます。

Q: Kinesis Data Firehose の配信ストリームとは何ですか?

配信ストリームは Kinesis Data Firehose の基盤となるエンティティです。配信ストリームを作成し、そこにデータを送信することにより、Firehose を利用できます。Firehose コンソールを使用するか、CreateDeliveryStream オペレーションを実行して、Kinesis Data Firehose 配信ストリームを作成できます。詳細については、配信ストリームの作成を参照してください。

Q: Kinesis Data Firehose のレコードとは何ですか?

レコードは、データ生成元から配信ストリームに送信される対象データです。データソースが Direct PUT または Kinesis Data Streams の場合、レコードの最大サイズ (Base64 エンコード前) は 1,024 KB です。データソースが Amazon MSK の場合、レコードの最大サイズ (Base64 エンコード前) は 10 MB です。

Q: Kinesis Data Firehose にはどのような制限がありますか?

制限の詳細については、デベロッパーガイドの Amazon Kinesis Data Firehose の制限を参照してください。

データソース

Q: Kinesis Data Firehose API にアクセスするには、どのプログラミング言語とプラットフォームを使用できますか?

Kinesis Data Firehose API は Amazon Web Services SDK で使用できます。Amazon Web Services SDK 用のプログラミング言語またはプラットフォームのリストについては、Amazon Web Services のツールをご参照ください。

Q: Amazon Kinesis Agent とは何ですか?

Kinesis Agent は、データを収集して配信ストリームに送信する機能を簡単に実現する、事前に構築された Java アプリケーションです。このエージェントは、ウェブサーバー、ログサーバー、データベースサーバーなど、Linux ベースのサーバー環境にインストールできます。エージェントによって特定のファイルがモニタリングされ、データが継続的に配信ストリームに送信されます。現在、Amazon Kinesis Agent では Amazon Linux、Red Hat Enterprise Linux、および Microsoft Windows がサポートされています。詳細については、Writing with Agents を参照してください。

Q: Amazon Kinesis Agent はどこで入手できますか?

次のコマンドとリンクを使用して Amazon Kinesis Agent をダウンロードおよびインストールできます。

  • Amazon Linux の場合: sudo yum install –y aws-kinesis-agent
  • Red Hat Enterprise Linux の場合: sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm
  • GitHub から: awlabs/amazon-kinesis-agent
  • Windows の場合: https://docs.aws.amazon.com/kinesis-agent-windows/latest/userguide/getting-started.html#getting-started-installation

Q: PutRecord オペレーションと PutRecordBatch オペレーションの違いは何ですか?

Kinesis Data Firehose 配信ストリームにデータを追加するには、Kinesis Agent を使用するか、Firehose の PutRecord オペレーションや PutRecordBatch オペレーションを使用します。PutRecord オペレーションは、1 度の API コールで単一のデータレコードを許可し、PutRecordBatch オペレーションは、1 度の API 呼び出しで複数のデータレコードを許可します。詳細については、PutRecordPutRecordBatch を参照してください。

Q: Amazon MSK から Kinesis Data Firehose 配信ストリームにデータを追加するにはどうすればよいですか?

AWS コンソールまたは Firehose API を通じて配信ストリームを作成または更新する場合、Amazon MSK クラスター/トピックを配信ストリームのソースとして設定できます。設定が完了すると、Firehose は MSK のトピックからデータを自動的に読み取り、そのデータを指定された S3 バケットにロードします。

Q: Amazon MSK と Kinesis Data Firehose の統合の主なメリットは何ですか?

コードを必要とすることなく、Amazon MSK トピックから供給されたストリーミングデータを変換して Amazon S3 にロードすることで、アプリケーションのオペレーションの複雑さとオーバーヘッドを軽減できます。例えば、Amazon MSK と Kinesis Data Firehose では、コードが不要で、Parquet/ORC 形式の変換、データバッファリング、サービス側のデータ検証などのデータ変換および変換機能が組み込まれています。自動配信の再試行、データ保持、自動スケーリング、冗長性も活用できるため、データは高い信頼性をもって配信されます。

Q: Kinesis Data Firehose では、どのようなタイプの Amazon MSK エンドポイントがサポートされていますか?

この機能を使用するには、MSK クラスターでパブリックエンドポイントまたはプライベートリンクが有効になっている必要があります。

Q: Kinesis Data Firehose を別の AWS アカウントの Amazon MSK クラスターに接続できますか?

はい。Kinesis Data Firehose は、さまざまな AWS アカウントで利用できる Amazon MSK クラスターに接続できます。Kinesis Data Firehose は、異なるアカウントに属する S3 バケットに配信することもできます。

Q: Kinesis のデータストリームから Kinesis Data Firehose 配信ストリームにデータを追加するにはどうすればよいですか?

AWS コンソールまたは Firehose API によって配信ストリームの作成や更新を行っている場合、Kinesis データストリームを配信ストリームのソースとして設定できます。設定が完了すると、Kinesis データストリームから Firehose によって自動的にデータが読み取られ、指定された送信先にロードされます。

Q: Kinesis Data Firehose はどれほどの頻度で Kinesis のストリームからデータを読み取りますか?

Kinesis Data Firehose では、各 Kinesis シャードにつき毎秒 1 回 Kinesis Data Streams GetRecords() が呼び出されます。

Q: 配信ストリームのソースに Kinesis のデータストリームが設定されている場合、Kinesis Data Firehose はどこからデータを読み取りますか?

配信ストリームのソースに Kinesis データストリームが設定されている場合、Kinesis Data Firehose では LATEST 位置からデータの読み取りをスタートします。Kinesis のデータストリームの位置の詳細については、Kinesis Data Streams サービス API リファレンスの GetShardIterator を参照してください。

Q: 自分の Kinesis データストリームを複数の Kinesis Data Firehose 配信ストリームのソースとして設定できますか?

はい、できます。ただし、Kinesis Data Firehose からの GetRecords() コールは Kinesis シャード全体のスロットリング上限に対してカウントされることに注意してください。スロットリングが発生しないよう、その他の Kinesis アプリケーションに合わせて配信ストリームを計画を立てることが必要になります。詳細については、Kinesis Data Streams デベロッパーガイドの Kinesis Data Streams の制限を参照してください。

Q: 自分の Kinesis のデータストリームがソースに設定されている場合でも、Kinesis Agent や Firehose の PutRecord オペレーションおよび PutRecordBatch オペレーションを使用して配信ストリームにデータを追加できますか?

いいえ、できません。Kinesis のデータストリームが Kinesis Data Firehose 配信ストリームのソースに設定されると、Firehose の PutRecord オペレーションと PutRecordBatch オペレーションが無効になります。その代わり、Kinesis Data Streams の PutRecord オペレーションと PutRecords オペレーションを使用して Kinesis のデータストリームにデータを追加できます。

Q: AWS IoT から配信ストリームにデータを追加するにはどうすればよいですか?

AWS IoT から配信ストリームにデータを追加するには、配信ストリームにイベントを送信する AWS IoT アクションを作成します。詳細については、Kinesis Data Firehose デベロッパーガイドの AWS IoT を使用した Amazon Kinesis Data Firehose への書き込みを参照してください。

Q: VPC フローログを Firehose に配信するにはどうすればよいですか?

AWS コンソールまたは Firehose API によって配信の作成や更新を行っている場合、Direct PUT を配信ストリームのソースとして設定できます。ストリームを作成すると、VPC フローログコンソールの Vended Logs セクションで、作成された Firehose ストリームを配信ストリームとして設定することができます。

Q: CloudWatch Logs から配信ストリームにデータを追加するにはどうすればよいですか?

CloudWatch Logs から Kinesis Data Firehose 配信ストリームにデータを追加するには、配信ストリームにイベントを送信する CloudWatch Logs サブスクリプションフィルターを作成します。詳細については、Amazon CloudWatch ユーザーガイドの 「CloudWatch Logs サブスクリプションフィルターの使用」を参照してください。

Q: CloudWatch Events から Kinesis Data Firehose 配信ストリームにデータを追加するにはどうすればよいですか?

CloudWatch Events から Kinesis Data Firehose 配信ストリームにデータを追加するには、配信ストリームをターゲットとして CloudWatch Events ルールを作成します。詳細については、Kinesis Data Firehose デベロッパーガイドの CloudWatch Events を使用した Amazon Kinesis Data Firehose への書き込みを参照してください。

Q: AWS Eventbridge から Amazon Kinesis Data Firehose 配信ストリームにデータを追加するにはどうすればよいですか?

AWS Eventbridge コンソールから Kinesis Data Firehose 配信ストリームにデータを追加します。詳細については、「AWS EventBridge のドキュメント」を参照してください。

Q: どのような暗号化を利用できますか?

Kinesis Data Firehose では、Amazon S3 バケットに送信されたデータを暗号化できます。配信ストリームを作成する際に、お客様が所有する AWS Key Management Service (KMS) キーによるデータの暗号化を選択できます。KMS の詳細については、AWS Key Management Service を参照してください。

Q: 配信ストリームの作成時に指定する必要がある IAM ロールは何ですか?

Kinesis Data Firehose では、Amazon S3 バケットや Amazon OpenSearch ドメインなどのリソースにアクセスするために、お客様が IAM ロールを指定することを前提としています。詳細については、Kinesis Data Firehose デベロッパーガイドの Kinesis Data Firehose によるアクセスの制御を参照してください。

データ変換と形式変換

Q: Kinesis Data Firehose で raw データを準備して変換するにはどうすればよいですか?

Kinesis Data Firehose では、データ raw や Json から、送信先のデータストアで必要な形式 (Apache Parquet や Apache ORC など) への組み込み型のデータ形式変換がサポートされています。独自のデータ処理パイプラインを構築する必要はありません。Kinesis Data Firehose では、S3 に配信する前に、[customer_id] や [transaction_id] などの静的または動的に定義されたキーを使用して、ストリーミングデータを動的にパーティションすることもできます。Kinesis Data Firehose は、これらのキーによってデータをグループ化し、キーに固有の S3 プレフィックスに配信することで、Athena、EMR、Redshift Spectrum を使用した S3 でのハイパフォーマンスでコスト効率の高い分析を容易に行うことができます。

Amazon Kinesis Data Firehose 内蔵されている形式変換のオプションに加え、配信ストリーム内で受信する raw データを AWS Lambda 関数を使用して準備および変換し、送信先にロードできます。データ変換用の AWS Lambda 関数は、配信ストリームを新規作成するとき、または既存の配信ストリームを編集する際に設定できます。Amazon は、クイックスタートのために選択できる複数の Lambda Blue プリントを作成しています。完全なリストは、Amazon Kinesis Data Firehose デベロッパーガイドをご参照ください。

Q: どの圧縮形式が利用できますか?

Amazon Kinesis Data Firehose では、Amazon S3 への配信前にデータを圧縮できます。このサービスでは現在、GZIP、ZIP、SNAPPY の圧縮形式がサポートされています。さらにデータを Amazon Redshift にロードする場合は、GZIP のみがサポートされています。

Q: CloudWatch Logs のサブスクリプション機能を使用すると、圧縮はどのように機能しますか?

CloudWatch Logs のサブスクリプション機能を使用すると、CloudWatch Logs から Kinesis Data Firehose にデータをストリーミングできます。CloudWatch Logs のすべてのログイベントは、既に gzip 形式で圧縮されています。二重に圧縮することを防ぐため、Firehose では圧縮しないように設定してださい。CloudWatch Logs のサブスクリプション機能の詳細については、Amazon CloudWatch Logs ユーザーガイドの 「Amazon Kinesis Data Firehose のサブスクリプションフィルター」を参照してください。

Q: AWS Lambda 関数で準備および変換したデータを Amazon Kinesis Data Firehose に戻すにはどうすればよいですか?

Lambda 関数で変換されたすべてのレコードは、以下の 3 つのパラメータと共に Firehose に戻す必要があります。それ以外のレコードは、Firehose によって拒否され、データ変換エラーとして処理されます。

  • recordId: Lambda 関数の呼び出し中、recordId は各レコードと共に Firehose から Lambda 関数に渡されます。変換された各レコードは、recordId を完全に同じ値に保ったまま返される必要があります。元の recordId と返された recordId が一致しない場合、データ変換エラーとして処理されます。
  • result: 各レコードの変換結果のステータス。このパラメータには次の値を使用できます。"Ok": レコードが期待どおり正しく変換された場合。"Dropped": ユーザーの処理ロジックによりレコードが期待どおりドロップされた場合。"ProcessingFailed": レコードを期待どおりに変換することができなかった場合。Firehose で SucceedProcessing.Records と SucceedProcessing.Bytes のメトリクスが作成される際、"Ok" および "Dropped" ステータスで返されたレコードは処理成功レコードとして扱われ、"ProcessingFailed" ステータスで返されたレコードは処理失敗レコードとして扱われます。
  • データ: based64 エンコード後の変換済みデータペイロード。

Q: エラーログとは何ですか?

Lambda 関数によるデータ変換を使用する場合、Firehose では Lambda 呼び出しとデータ配信のすべてのエラーを Amazon CloudWatch Logs のログに記録できます。Lambda 呼び出しまたはデータ配信が失敗した場合、ユーザーは特定のエラーログをここで確認できます。詳細については、「Amazon CloudWatch Logs を使用したモニタリング」を参照してください。

Q: ソースレコードバックアップとは何ですか?

Lambda 関数によるデータ変換を使用する場合、ソースレコードバックアップを有効にすると、Amazon Kinesis Data Firehose で未変換の受信データは別の S3 バケットに送信されます。Firehose によって生成される「YYYY/MM/DD/HH」形式の UTC 時刻のプレフィックスの前に、別のプレフィックスを追加することを指定できます。

Amazon S3 用の組み込みデータ変換

Q: Kinesis Data Firehose の動的パーティショニングはいつ使用するのですか?

Kinesis Data Firehose の動的パーティショニングは、ソースでの手動パーティショニング、またはデータ保存後の手動パーティショニングの複雑さや遅延を解消し、最適化されたデータセットをクエリする高速な分析を可能にします。これにより、データセットがすぐに利用できるようになることで分析ツールが効率的にクエリを実行でき、データへのきめ細かいアクセス制御が強化されます。例えば、マーケティングオートメーションをご利用のお客様は、お客様 ID によってオンザフライでデータをパーティショニングすることができます。これにより、お客様専用のクエリで最適化されたデータセットをクエリし、結果を迅速に得ることができます。IT オペレーションやセキュリティモニタリングを行うお客様は、ログに埋め込まれたイベントのタイムスタンプに基づいてグループ化を作成することで、最適化されたデータセットをクエリし、結果を迅速に得ることができます。この機能と Amazon Kinesis Data Firehose の既存の JSON-to-parquet 形式への変換機能を組み合わせることで、Amazon Kinesis Data Firehose は S3 の理想的なストリーミング ETL オプションとなります。

Q: Kinesis Data Firehose で動的パーティショニングを設定するにはどうすればいいですか?

Kinesis Data Firehose のデータパーティショニング機能は、AWS マネジメントコンソール、CLI、SDK から設定できます。Kinesis Data Firehose の配信ストリームを作成または更新する際に、配信ストリームの配信先として Amazon S3 を選択し、動的パーティショニングを有効にします。パーティショニングに使用するキーを定義するために、キーを指定したり、ランタイム時に評価される式を作成することができます。例えば、受信ストリームのデータフィールド (customer id など) を選択し、S3 プレフィックス式 (customer_id=!{partitionKey:customer_id}/ など) を定義できます。この式は、取り込まれたレコードに基づいてランタイム時に評価され、どの S3 プレフィックスにレコードを配信するかを定義します。

Q: 動的パーティショニングやパーティショニングキーを使って、どのような変換やデータ処理ができますか?

Kinesis Data Firehose は、Amazon S3 にデータを書き込む際に、追加設定なしで parquet/orc 変換をサポートします。Kinesis Data Firehose は Lambda 関数とも連携しているので、独自の変換コードの書き込みも可能です。Kinesis Data Firehose には、JSON 形式のレコードからキーデータフィールドを抽出するサポートも組み込まれています。また、Kinesis Data Firehose は、これらのパーティションキーに対する変換を可能にする JQ パース言語もサポートしています。詳細については、「Kinesis Data Firehose デベロッパーガイド」を参照してください。

データ配信と送信先

Q: すべての raw データのコピーを S3 バケットに保持できますか?

はい。Kinesis Data Firehose では、変換されたレコードを送信先に配信するのと並行して、未変換のすべてのレコードを S3 バケットにバックアップできます。配信ストリームを作成または更新するときにソースレコードバックアップを有効にすることができます。

Q: Kinesis Data Firehose から Amazon S3 バケットにデータが配信される頻度はどのくらいですか?

Amazon S3 へのデータ配信頻度は、配信ストリーム作成時に設定された S3 バッファサイズとバッファ間隔値によって決定します。Kinesis Data Firehose では、Amazon S3 にデータを配信する前に受信データがバッファされます。S3 バッファサイズ (1 MB~128 MB) またはバッファ間隔 (60~900 秒) の値を設定できます。最初に満たされた条件によって Amazon S3 へのデータ配信がトリガーされます。Apache Parquet または動的パーティショニングを有効にしている場合、バッファサイズは MB 単位で、Amazon S3 送信先の場合は 64 MB から 128 MB の範囲で、デフォルト値は 128 MB です。送信先へのデータ配信が配信ストリームへのデータの取り込みより遅くなった場合、Kinesis Data Firehose では、バッファサイズを自動的に拡大して遅れを取り戻し、すべてのデータが送信先に配信されるようにします。

Q: データの圧縮を選択した場合、バッファサイズはどのように適用されますか?

バッファサイズは圧縮前に適用されます。そのため、データの圧縮を選択した場合、ご利用の Amazon S3 バケット内の対象データのサイズは、指定したバッファサイズよりも小さくなる可能性があります。

Q: 配信ストリーム作成時に、Amazon Redshift ユーザーにどのような権限を指定する必要がありますか?

Amazon Redshift ユーザーは、お客様のデータを Amazon S3 バケットから Redshift インスタンスにコピーするために、Redshift INSERT 権限を持っている必要があります。

Q: Amazon Redshift インスタンスが VPC 内にある場合は何を行う必要がありますか?

Amazon Redshift インスタンスが VPC 内にある場合は、VPC から Firehose の IP アドレスのブロックを解除して、Amazon Kinesis Data Firehose から Redshift インスタンスにアクセスできるようにする必要があります。VPC への IP のブロックを解除する方法の詳細については、Amazon Kinesis Data Firehose デベロッパーガイドの Amazon Redshift の送信先へのアクセス権を Firehose に付与するを参照してください。

Q: Amazon Redshift を送信先として選択する際に、Amazon S3 バケットを用意する必要があるのはなぜですか?

Amazon Redshift を送信先として選択した場合、Amazon Kinesis Data Firehose ではまず Amazon S3 バケットにデータが送信されます。その後 Redshift COPY コマンドが実行され、S3 バケットから Redshift インスタンスにデータがロードされます。

Q: Amazon OpenSearch Service とは何ですか?

Amazon OpenSearch Service を使用すると、インタラクティブなログ分析、リアルタイムのアプリケーションモニタリング、ウェブサイト検索などを簡単に実行できます。OpenSearch は、Elasticsearch から派生したオープンソースの分散検索および分析スイートです。Amazon OpenSearch Service は、OpenSearch の最新バージョン、Elasticsearch の 19 バージョン (1.5〜7.10 バージョン) のサポート、および OpenSearch Dashboards と Kibana (1.5〜7.10 バージョン) を利用した視覚化機能を提供します。Amazon OpenSearch の詳細についてはこちらをクリックしてください。

Q: Amazon OpenSearch Service の送信先のインデックスローテーションについて教えてください。

Kinesis Data Firehose では、Amazon OpenSearch Service インデックスを一定の期間でローテーションさせることができます。この期間は、配信ストリームの作成時に設定できます。詳細については、Amazon Kinesis Data Firehose デベロッパーガイドの Amazon OpenSearch 送信先のインデックスのローテーションを参照してください。

Q: Amazon OpenSearch Service を送信先として選択する際に、Amazon S3 バケットを用意する必要があるのはなぜですか?

Kinesis Data Firehose では、Amazon OpenSearch Service にデータをロードする際に、すべてのデータまたは配信に失敗したデータのみをバックアップできます。この機能を利用してデータの損失を防ぐために、バックアップ用の Amazon S3 バケットを用意する必要があります。

Q: 配信ストリームを作成した後に設定を変更することはできますか?

配信ストリームの設定は、作成後いつでも変更できます。Firehose コンソールを使用するか、UpdateDestination オペレーションを実行して、設定を変更できます。設定を変更している間も配信ストリームは ACTIVE 状態のままであるため、継続的にデータを配信ストリームに送信できます。変更後の設定は通常、数分で適用されます。

VPC の宛先に配信するときに、同じ VPC、サブネット、セキュリティグループ内で新しい宛先にアクセスできる限り、宛先エンドポイント URL を変更できます。VPC、サブネット、セキュリティグループを変更するには、Firehose 配信ストリームを再作成する必要があります。

Q: あるアカウントで Kinesis Data Firehose 配信ストリームを使用して、別のアカウントの Amazon OpenSearch Service ドメインの VPC の送信先にデータを配信できますか?

Kinesis Data Firehose の配信を Amazon OpenSearch Service の別のアカウントに配信できるのは、Kinesis Data Firehose と Amazon OpenSearch Service がパブリックエンドポイント経由で接続されている場合のみです。

Kinesis Data Firehose と Amazon OpenSearch Service がプライベート VPC で接続されている場合です。その場合、Kinesis Data Firehose 配信ストリームと送信先の Amazon OpenSearch Service のドメイン VPC は同じアカウントにある必要があります。

Q: あるリージョンで Kinesis Data Firehose 配信ストリームを使用して、別のリージョンの Amazon OpenSearch Service ドメインの VPC の送信先にデータを配信できますか?

いいえ、Kinesis Data Firehose 配信ストリームと送信先の Amazon OpenSearch Service のドメインは同じリージョンにある必要があります。

Q: Kinesis Data Firehose から Amazon OpenSearch ドメインにデータが配信される頻度はどのくらいですか?

Amazon OpenSearch Service へのデータ配信頻度は、配信ストリーム作成時に設定された OpenSearch バッファサイズとバッファ間隔値によって決定されます。Firehose では、Amazon OpenSearch Service にデータを配信する前に受信データがバッファされます。OpenSearch バッファサイズの値 (1 MB~100 MB) またはバッファ間隔 (60~900 秒) の値を設定し、Amazon OpenSearch Service へのデータ配信を最初にトリガーするために満たす条件を設定できます。送信先へのデータ配信が配信ストリームへのデータの取り込みより遅くなった場合、Amazon Kinesis Data Firehose では、バッファサイズを自動的に拡大して遅れを取り戻し、すべてのデータが送信先に配信されるようにします。

Q: Amazon S3 バケットのマニフェストフォルダとは何ですか?
送信先が Amazon Redshift の場合、Amazon S3 オブジェクトを Redshift インスタンスにまとめてロードするために、Amazon Kinesis Data Firehose にマニフェストファイルが作成されます。マニフェストフォルダには、Firehose により生成されたマニフェストファイルが保存されます。

Q: Amazon S3 バケットではバックアップされた OpenSearch ドキュメントはどのように表示されますか?
"すべてのドキュメント" モードが使用されている場合、Amazon Kinesis Data Firehose により配信ストリームのバッファリングに基づいて複数の受信レコードが連結され、S3 オブジェクトとして S3 バケットに配信されます。設定されているバックアップモードにかかわらず、失敗したドキュメントは特定の JSON 形式を使用して S3 バケットに配信されます。これにより、エラーコード、配信試行回数などの追加情報が提供されます。詳細については、「Amazon Kinesis Data Firehose デベロッパーガイド」の「Amazon S3 Backup for the Amazon OpenSearch Destination」(Amazon OpenSearch の送信先の Amazon S3 のバックアップ) を参照してください。

Q: 単一の配信ストリームで複数の Amazon S3 バケットにデータを配信することはできますか?

現在、単一の配信ストリームがデータを配信できるのは単一の Amazon S3 バケットに対してのみです。複数の S3 バケットにデータを配信する場合は、複数の配信ストリームを作成できます。

Q: 単一の配信ストリームで複数の Amazon Redshift インスタンスまたはテーブルにデータを配信することはできますか?

現在、1 つの配信ストリームでは 1 つの Redshift インスタンスと 1 つのテーブルにのみデータを配信できます。複数の Redshift インスタンスまたはテーブルにデータを配信する場合は、複数の配信ストリームを作成できます。

Q: 単一の配信ストリームで複数の Amazon OpenSearch Service ドメインまたはインデックスにデータを配信することはできますか?

現在、単一の配信ストリームがデータを配信できるのは単一の Amazon OpenSearch Service ドメインおよびインデックスのみです。複数の Amazon OpenSearch ドメインまたはインデックスにデータを配信する場合は、複数の配信ストリームを作成できます。

Q: Amazon Kinesis Data Firehose はどのようにして VPC の Amazon OpenSearch Service ドメインにデータを配信しますか?

Kinesis Data Firehose が VPC の Amazon OpenSearch Service の送信先にデータを配信できるようにすると、Amazon Kinesis Data Firehose は、選択したサブネットごとに VPC に 1 つ以上のクロスアカウント Elastic Network Interface (ENI) を作成します。Amazon Kinesis Data Firehose はこれらの ENI を使用してデータを VPC に配信します。ENI の数は、サービス要件を満たすように自動的に調整されます。

配信ストリームのトラブルシューティングと管理

Q: Amazon Kinesis Data Firehose 配信ストリームにデータを送信する際にスロットルされるのはなぜですか?

初期設定では、各配信ストリームで、毎秒 2,000 件のトランザクション、毎秒 5,000 件および毎秒 5 MB のレコードの取り込みが可能です。この制限は、サービス上限緩和申請を送信することにより簡単に引き上げることができます。

Q: Amazon S3 バケット、Amazon Redshift のテーブル、Amazon OpenSearch インデックス、あるいは Splunk クラスターに重複したレコードがあるのはなぜですか?

Amazon Kinesis Data Firehose では、データの配信に少なくとも 1 回のセマンティクスが使用されます。データ配信のリクエスト試行がタイムアウトして、配信が Firehose によって再試行されるなど、ごくまれに以前のリクエストが実行されて重複が発生する場合があります。

Q: Amazon S3 バケットへのデータ配信が失敗した場合はどうなりますか?

データソースが Direct PUT で、Amazon S3 バケットへのデータ配信が失敗した場合、Amazon Kinesis Data Firehose は、最大 24 時間、5 秒ごとにデータの配信を再試行します。24 時間の最長保持期間が経過しても問題が継続する場合、Amazon Kinesis Data Firehose は該当のデータを破棄します。

データソースが Kinesis データストリームで、Amazon S3 バケットへのデータ配信が失敗した場合、Amazon Kinesis Data Firehose では、Kinesis Data Streams で設定されている最大期間まで、5 秒ごとにデータの配信が再試行されます。

Q: Amazon Redshift インスタンスへのデータ配信が失敗した場合は、どうなりますか?

Amazon Redshift インスタンスへのデータ配信が失敗した場合、Amazon Kinesis Data Firehose では最大 120 分間、5 分ごとにデータの配信が再試行されます。120 分後、Amazon Kinesis Data Firehose では COPY の準備が整っている S3 オブジェクトの現在のバッチをスキップし、次のバッチの処理に進みます。スキップされたオブジェクトに関する情報はエラーフォルダ内のマニフェストファイルとして S3 バケットに送信されるため、手動によるバックフィルに使用できます。マニフェストファイルを使って手動でデータをコピーする方法について詳しくは、マニフェストを使用し、データファイルを指定するを参照してください。

Q: Amazon OpenSearch ドメインへのデータ配信が失敗した場合は、どうなりますか?

Amazon OpenSearch Service の送信先については、配信ストリームの作成時に 0~7,200 秒の間再試行期間を指定することができます。Amazon OpenSearch ドメインへのデータ配信が失敗した場合、Amazon Kinesis Data Firehose では、指定された期間にデータ配信が再試行されます。再試行期間の経過後、Amazon Kinesis Data Firehose ではデータの現在のバッチをスキップし、次のバッチの処理に進みます。スキップされたドキュメントに関する情報は opensearch_failed フォルダ内の S3 バケットに送信されるため、手動によるバックフィルに使用できます。

Q: データ変換に失敗した場合はどうなりますか?

Firehose でデータ変換のための Lambda 関数を呼び出す場合、2 つのタイプの失敗シナリオがあります。

  • 最初のタイプは、ネットワークのタイムアウトに到達して Lambda の呼び出し制限に達したなどの理由で関数の呼び出しが失敗する場合です。この失敗シナリオでは、Firehose はデフォルトで呼び出しを 3 回再試行し、そのあと問題のレコードのバッチをスキップします。スキップされたレコードは処理失敗レコードとして扱われます。呼び出しの再試行回数は、CreateDeliveryStream API および UpdateDeliveryStream API を使用して 0 から 300 の間で設定できます。このタイプの失敗では、Firehose のエラーログ機能を使用して、呼び出しエラーを CloudWatch Logs に書き出すことができます。詳細については、「Amazon CloudWatch Logs を使用したモニタリング」を参照してください。
  • 2 つ目のタイプの失敗シナリオは、レコードが Lambda 関数から返されるときにレコードの変換結果が "ProcessingFailed" に設定される場合に発生します。Firehose ではこれらのレコードは処理失敗レコードとして扱われます。このタイプの失敗では、Lambda 関数のログ機能を使用して、エラーログを CloudWatch Logs に書き出すことができます。詳細については、「AWS Lambda の Amazon CloudWatch Logs へのアクセス」を参照してください。

どちらのタイプの失敗シナリオでも、処理失敗レコードは S3 バケットの processing_failed フォルダに送信されます。

Q: 配信された S3 オブジェクトのサイズが配信ストリーム設定で指定したバッファサイズより大きくなるのはなぜですか?

バッファ間隔の条件より先にバッファサイズの条件が満たされている場合は大抵、配信された S3 オブジェクトのサイズに指定されたバッファサイズが反映されます。ただし、送信先へのデータ配信が配信ストリームへのデータ書き込みより遅くなった場合、Firehose では、バッファサイズを動的に拡大して遅れを取り戻し、すべてのデータが送信先に配信されるようにします。このような場合、配信された S3 オブジェクトのサイズが指定されたバッファサイズより大きくなる可能性があります。

Q: Amazon S3 バケットにあるエラーフォルダとは何ですか?

エラーフォルダには、Amazon Redshift インスタンスにロードできなかった S3 オブジェクトの情報が格納されたマニフェストファイルが保存されます。Redshift COPY コマンドを使用して、これらのオブジェクトを手動で再ロードできます。マニフェストファイルを使って手動でデータをコピーする方法について詳しくは、マニフェストを使用し、データファイルを指定するを参照してください。

Q: Amazon S3 バケットにある opensearch_failed フォルダとは何ですか?

opensearch_failed フォルダには、Amazon OpenSearch へのロードに失敗したドキュメントが保存されています。 Amazon OpenSearch ドメインへのデータ配信に失敗した場合はどうなりますか?ドメイン。バックフィルのために手動でこれらのドキュメントのインデックスを再作成できます。

Q: Amazon S3 バケットにある processing_failed フォルダとは何ですか?

processing_failed フォルダは AWS Lambda 関数で変換に失敗したレコードが保管されるフォルダです。これらのレコードは再度手動で処理できます。

Q: Amazon Kinesis Data Firehose 配信ストリームの動作とパフォーマンスをモニタリングするにはどうすればいいですか?

Firehose コンソールには、受信データボリュームや配信データボリュームなど、オペレーションとパフォーマンスに重要なメトリクスが表示されます。また Amazon Kinesis Data Firehose は Amazon CloudWatch メトリクスとも統合されているため、配信ストリームのメトリクスを収集、表示、分析できます。Amazon Kinesis Data Firehose のメトリクスの詳細については、Amazon Kinesis Data Firehose デベロッパーガイドの 「Amazon CloudWatch Metrics のモニタリング」を参照してください。

Q: Amazon Kinesis Data Firehose 配信ストリームのデータ変換および送信障害をモニタリングするにはどうすればいいですか?

Amazon Kinesis Data Firehose は Amazon CloudWatch Logs と統合されているため、データの変換または送信が失敗した場合に特定のエラーログを確認できます。エラーログは配信ストリームの作成時に有効にできます。詳細については、Amazon Kinesis Data Firehose デベロッパーガイドの 「Amazon CloudWatch Logs を使用したモニタリング」を参照してください。

Q: Amazon Kinesis Data Firehose 配信ストリームへのアクセスを管理および制御する方法を教えてください。

Amazon Kinesis Data Firehose は、AWS のサービスとリソースへのユーザーアクセスを安全に制御できる AWS Identity and Access Management というサービスに統合されています。例えば、Firehose 配信ストリームへのデータの追加を特定のユーザーまたはグループのみに許可するポリシーを作成できます。ストリーミングのアクセスの管理と制御に関する詳細については、「Amazon Kinesis Data Firehose によるアクセスの制御」 を参照してください。

Q: セキュリティの分析と動作のトラブルシューティングのために Amazon Kinesis Data Firehose 配信ストリームに対して行われた API コールのログを記録する方法を教えてください。

Amazon Kinesis Data Firehose は AWS CloudTrail と統合されています。AWS CloudTrail は、ユーザーのアカウントに対する AWS API コールを記録してログファイルを提供するサービスです。API コールのログおよびサポートされる Amazon Kinesis Data Firehose API オペレーションのリストの詳細については、「AWS CloudTrail を使用した Amazon Kinesis Data Firehose API コールのログ記録」を参照してください。

料金と請求

Q: Kinesis Data Firehose は AWS 無料利用枠の対象ですか?

いいえ。現在、Amazon Kinesis Data Firehose を AWS 無料利用枠でご利用いただくことはできません。AWS 無料利用枠は、AWS のサービスのグループの試用を無料で提供するプログラムです。詳細については、「AWS 無料利用枠」を参照してください。

Q: Amazon Kinesis Data Firehose のコストはどれくらいですか?

Amazon Kinesis Data Firehose ではシンプルな従量課金制を採用しています。前払い料金や最低料金はなく、使用したリソースに対してのみお支払いいただきます。Amazon Kinesis Data Firehose の料金は、Firehose によって取り込まれたデータボリューム (GB) に基づいています。各レコードは、Direct PUT および Kinesis Data Streams をソースとする場合、直近の 5 KB の倍数に切り上げた数値となります。Vended Logs をソースとする場合、料金は Firehose で取り込んだデータ量 (GB) に基づいて決定されます。Amazon Kinesis Data Firehose の料金の詳細については、Amazon Kinesis Data Firehose 料金を参照してください。

Q: PutRecordBatch オペレーションを使用してデータを Amazon Kinesis Data Firehose に送信する場合、5 KB への切り上げはどのように計算されますか?

5 KB への切り上げは、API オペレーションのレベルではなく、レコードのレベルで計算されます。例えば、PutRecordBatch 呼び出しに 1 KB のレコードが 2 件含まれている場合、その呼び出しのデータボリュームは 10 KB となります(レコードごとに 5 KB)

Q: Kinesis Data Firehose の料金に、Amazon S3、Amazon Redshift、Amazon OpenSearch Service、AWS Lambda の料金は含まれていますか?

いいえ、ストレージやリクエストコストを含む Amazon S3、Amazon Redshift、Amazon OpenSearch Service、AWS Lambda の使用量に関する料金は別途請求されます。詳細については、Amazon S3 の料金Amazon Redshift の料金Amazon OpenSearch Service の料金AWS Lambda の料金を参照してください。

サービスレベルアグリーメント (SLA)

Q: Amazon Kinesis Data Firehose SLA では何が保証されますか?

Amazon Kinesis Data Firehose SLA では、Amazon Kinesis Data Firehose について少なくとも 99.9% の月間稼働率を保証しています。

Q: SLA サービスクレジットの資格を有しているかどうかは、どうすればわかりますか?

同じリージョン内の複数のアベイラビリティーゾーンでタスクを実行しており、任意の月間課金期間中に月間稼働率が 99.9% 未満であった場合、Amazon Kinesis Data Firehose SLA に基づいて Amazon Kinesis Data Firehose に対する SLA クレジットを受け取る資格があります。

SLA の利用規約に関するすべての詳細、およびクレジット請求方法の詳細については、Amazon Kinesis Data Firehose SLA の詳細ページを参照してください。

Amazon Kinesis Data Firehose の料金の詳細

料金ページを見る
始める準備はできましたか?
サインアップ
ご不明な点がおありですか?
お問い合わせ