ゼファーネットのロゴ

Amazon Data Firehose と Snowflake を使用したリアルタイム ストリーミングでデータ アーキテクチャをアップグレード |アマゾン ウェブ サービス

日付:

今日のペースの速い世界では、タイムリーな洞察と意思決定が求められており、ストリーミング データの重要性が高まっています。ストリーミング データとは、さまざまなソースから継続的に生成されるデータを指します。クリックストリーム イベント、変更データ キャプチャ (CDC)、アプリケーションとサービスのログ、モノのインターネット (IoT) データ ストリームなど、このデータのソースは急増しています。 Snowflake は、ストリーミング データをプラットフォームに取り込むための 2 つのオプション、Snowpipe と Snowflake Snowpipe Streaming を提供します。 Snowpipe は、大きなファイルをロードするなど、ファイル取り込み (バッチ処理) のユースケースに適しています。 Amazon シンプル ストレージ サービス (Amazon S3) から Snowflake へ。 2023 年 XNUMX 月にリリースされた新しい機能である Snowpipe ストリーミングは、データの連続ストリームをロードするなど、行セット取り込み (ストリーミング) のユースケースに適しています。 Amazon Kinesisデータストリーム or ApacheKafkaのAmazonマネージドストリーミング (Amazon MSK)。

Snowpipe Streaming が登場する前は、AWS のお客様はファイルの取り込みと行セットの取り込みの両方のユースケースに Snowpipe を使用していました。まず、ストリーミング データを Kinesis Data Streams または Amazon MSK に取り込み、次に Amazon Data Firehose を使用してストリームを集約して Amazon S3 に書き込み、続いて Snowpipe を使用してデータを Snowflake にロードしました。ただし、この複数のステップのプロセスにより、Snowflake でデータを分析できるようになるまでに最大 XNUMX 時間の遅延が発生する可能性があります。さらに、特に Snowpipe が Snowflake 顧客クラスターにアップロードする必要がある小さなファイルがある場合、コストがかかります。

この問題を解決するために、Amazon Data Firehose は Snowpipe Streaming と統合され、Kinesis Data Streams、Amazon MSK、Firehose Direct PUT からのデータ ストリームを低コストで数秒でキャプチャ、変換、Snowflake に配信できるようになりました。 Amazon Data Firehose コンソールで数回クリックするだけで、Snowflake にデータを配信するための Firehose ストリームを設定できます。 Amazon Data Firehose を使用するためのコミットメントや先行投資はなく、ストリーミングされたデータの量に対してのみ料金を支払います。

Amazon Data Firehose の主な機能には次のようなものがあります。

  • フルマネージドサーバーレスサービス – リソースを管理する必要がなく、Amazon Data Firehose は継続的な管理を行わなくても、データ ソースのスループットに合わせて自動的にスケーリングします。
  • コードなしで簡単に使用できる – アプリケーションを作成する必要はありません。
  • リアルタイムのデータ配信 – 数秒で迅速かつ効率的にデータを目的地に送信できます。
  • 20 を超える AWS サービスとの統合 – シームレスな統合は、Kinesis Data Streams、Amazon MSK、Amazon VPC フロー ログ、AWS WAF ログ、Amazon CloudWatch Logs、Amazon EventBridge、AWS IoT Core などの多くの AWS サービスで利用できます。
  • 従量課金モデル – Amazon Data Firehose が処理するデータ量に対してのみお支払いいただきます。
  • 接続性 – Amazon Data Firehose は、VPC 内のパブリックまたはプライベート サブネットに接続できます。

この投稿では、AWS からストリーミング データを数秒以内に Snowflake に取り込み、高度な分析を実行する方法について説明します。一般的なアーキテクチャを調査し、低遅延データ ストリーミングのためのローコード、サーバーレス、コスト効率の高いソリューションをセットアップする方法を説明します。

ソリューションの概要

以下は、AWS から Snowflake にデータをストリーミングするソリューションを実装する手順です。

  1. Snowflake データベース、スキーマ、テーブルを作成します。
  2. Kinesis データストリームを作成します。
  3. 安全なプライベートリンクを使用して、ソースとして Kinesis Data Streams、宛先として Snowflake を使用して Firehose 配信ストリームを作成します。
  4. セットアップをテストするには、サンプル ストリーム データを AmazonKinesisデータジェネレーター (KDG) 宛先として Firehose 配信ストリームを使用します。
  5. Snowflake テーブルにクエリを実行して、Snowflake にロードされたデータを検証します。

このソリューションは、次のアーキテクチャ図に示されています。

前提条件

次の前提条件が必要です。

Snowflake データベース、スキーマ、テーブルを作成する

Snowflake でデータを設定するには、次の手順を実行します。

  • Snowflake アカウントにログインし、データベースを作成します。
    create database adf_snf;

  • 新しいデータベースにスキーマを作成します。
    create schema adf_snf.kds_blog;

  • 新しいスキーマにテーブルを作成します。
    create or replace table iot_sensors
    (sensorId number,
    sensorType varchar,
    internetIP varchar,
    connectionTime timestamp_ntz,
    currentTemperature number
    );

Kinesisデータストリームを作成する

データ ストリームを作成するには、次の手順を実行します。

  • Kinesis Data Streams コンソールで、 データストリーム ナビゲーションペインに表示されます。
  • 選択する データストリームを作成する.
  • [データ ストリーム名] に名前を入力します (例: KDS-Demo-Stream).
  • 残りの設定はデフォルトのままにしておきます。
  • [データ ストリームの作成] を選択します。

Firehose配信ストリームを作成する

次の手順を実行して、ソースとして Kinesis Data Streams、宛先として Snowflake を使用する Firehose 配信ストリームを作成します。

  • Amazon Data Firehose コンソールで、選択します。 Firehose ストリームを作成する.
  • ソース、選択する Amazon Kinesisデータストリーム.
  • 開催場所、選択する スノーフレーク.
  • Kinesis データストリーム、前に作成したデータ ストリームを参照します。
  • Firehose ストリーム名、デフォルトで生成された名前をそのままにするか、好みの名前を入力します。
  • 接続設定、Amazon Data Firehose を Snowflake に接続するには、次の情報を指定します。
    • スノーフレークアカウントURL、Snowflake アカウントの URL を入力します。
    • ユーザー、前提条件で生成されたユーザー名を入力します。
    • 秘密鍵、前提条件で生成された秘密キーを入力します。秘密キーが PKCS8 形式であることを確認してください。 PEMは含めないでください header-BEGIN プレフィックスと footer-END 秘密キーの一部としてサフィックスを追加します。キーが複数行に分かれている場合は、改行を削除してください。
    • 職種選択 カスタム Snowflake ロールを使用する そして、データベーステーブルに書き込むためのアクセス権を持つ IAM ロールを入力します。

パブリック接続またはプライベート接続を使用して Snowflake に接続できます。 VPC エンドポイントを指定しない場合、デフォルトの接続モードはパブリックです。 Snowflake ネットワーク ポリシーで Firehose IP のリストを許可するには、次を参照してください。 目的地にスノーフレークを選択してください。プライベート リンク URL を使用している場合は、次を使用して VPCE ID を指定します。 SYSTEM$GET_PRIVATELINK_CONFIG:

select SYSTEM$GET_PRIVATELINK_CONFIG();

この関数は、次のスクリーンショットに示すように、Snowflake サービスへのプライベート接続のセルフサービス構成を容易にするために必要な Snowflake アカウント情報の JSON 表現を返します。

  • この投稿ではプライベート リンクを使用しているため、 VPCE ID、VPCE ID を入力します。
  • データベース構成設定、Snowflake データベース、スキーマ、テーブル名を入力します。
  • バックアップ設定 セクション、 S3 バックアップ バケット、前提条件の一部として作成したバケットを入力します。
  • 選択する Firehose ストリームを作成する.

または、 AWS CloudFormation テンプレートを使用して、Amazon Data Firehose コンソールを使用するのではなく、宛先として Snowflake を使用して Firehose 配信ストリームを作成します。

CloudFormation スタックを使用するには、次を選択します。

BDB-4100-CFN-起動スタック

サンプルストリームデータの生成
作成した Kinesis データストリームを使用して、KDG からサンプルストリームデータを生成します。

{ 
"sensorId": {{random.number(999999999)}}, 
"sensorType": "{{random.arrayElement( ["Thermostat","SmartWaterHeater","HVACTemperatureSensor","WaterPurifier"] )}}", 
"internetIP": "{{internet.ip}}", 
"connectionTime": "{{date.now("YYYY-MM-DDTHH:m:ss")}}", 
"currentTemperature": {{random.number({"min":10,"max":150})}} 
}

Snowflakeテーブルにクエリを実行する

Snowflake テーブルにクエリを実行します。

select * from adf_snf.kds_blog.iot_sensors;

KDG によって生成され、Kinesis Data Streams に送信されたデータが、Amazon Data Firehose を通じて Snowflake テーブルにロードされていることを確認できます。

トラブルシューティング

KDG が Firehose 配信ストリームにデータを送信した後にデータが Kinesis Data Steam にロードされない場合は、更新して KDG にログインしていることを確認してください。

Snowflake 宛先テーブル定義に変更を加えた場合は、Firehose 配信ストリームを再作成します。

クリーンアップ

今後の料金の発生を避けるため、この演習の一環として作成したリソースを今後使用する予定がない場合は削除してください。

まとめ

Amazon Data Firehose は、Snowpipe Streaming にデータを配信する簡単な方法を提供し、コストを節約し、レイテンシーを数秒に短縮することができます。 Snowflake を使用した Amazon Kinesis Firehose を試すには、Snowflake を宛先として使用した Amazon Data Firehose ラボを参照してください。


著者について

スワプナ・バンドラ AWS アナリティクス スペシャリスト SA チームのシニア ソリューション アーキテクトです。 Swapna は、顧客のデータと分析のニーズを理解し、クラウドベースの適切に設計されたソリューションを開発できるようにすることに情熱を持っています。仕事以外では、彼女は家族と時間を過ごすことを楽しんでいます。

モスタファ・マンスール プリンシパル プロダクト マネージャー – アマゾン ウェブ サービスの技術部門で、Amazon Kinesis Data Firehose に取り組んでいます。 彼は、顧客の複雑な課題を大規模に解決する直感的な製品エクスペリエンスの開発を専門としています。 彼が Amazon Kinesis Data Firehose で一生懸命働いていないときは、スカッシュ コートでモスタファを見つけることができるでしょう。

ボスコ・アルバカーキ AWS のシニア パートナー ソリューション アーキテクトであり、エンタープライズ データベース ベンダーおよびクラウド プロバイダーのデータベースおよび分析製品を 20 年以上使用してきた経験があります。 彼は、テクノロジー企業がデータ分析ソリューションと製品を設計および実装するのを支援してきました。

スポット画像

最新のインテリジェンス

スポット画像