Amazon Kinesis Firehoseがサンプルデータの投入に対応しました

2016.11.08

Amazon Kinesis Analytics, Amazon S3, Amazon Redshift, Amazon Elasticsearch Service などとニアリアルタムにストリームデータを連携する Amazon Kinesis Firehose というサービスがあります。

diagram-kinesis-firehose-s3-redshift-elasticsearch

画像引用元

これまでは、システム連携の疎通確認をするには、Amazon Kinesis Firehoseのストリームに対して自前でデータを投入する必要がありました。2016/11/07の機能追加により、組み込みのサンプルデータが用意され、管理画面から簡単にサンプルデータをストリーム形式で投入できるようになりました。

早速この機能を試してみたいと思います。

Amazon Kinesis Firehoseのセットアップ

作業の流れ

Firehose の連携先は複数ありますが、今回は多くの人が使い慣れているであろう S3 と連携させます。

セットアップには以下の作業が発生します。

  • ストリーミングデータ連携先S3を作成
  • FirehoseがS3に書き込めるためのIAM Roleを作成
  • Amazon Kinesis Firehose のストリームを作成

管理画面からウィザード形式でセットアップする場合は、これらの作業をまとめて行えます。

ウィザード形式で Firehose ストリームの作成

Amazon Kinesis Firehoseのトップ画面に移動します。

注意点として、Firehoseは現時点では以下のリージョンでしかサービス展開されていません。

  • US East (N. Virginia) us-east-1
  • US West (Oregon) us-west-2
  • EU (Ireland) eu-west-1

今回は EU(Ireland)を利用しました。

 

fh-fh-top

「Create Delivery Stream」ボタンからストリームを作成します

次にウィザードに従い、連携先のS3バケット設定などを行います。

お伝えしたとおり、

  • 新規S3バケットの作成
  • 連携用IAM Roleの作成

などもウィザード中に行えます。

連携先バケットの設定

fh-s3-destination

Kinesis Firehoseの設定

fh-configuration

サンプルデータの投入

ストリームの詳細画面に移動します。

詳細画面

fh-6-stream-detail

"Test with demo data" というブロックがあるため、こちらをクリックすると、サンプルデータの投入画面が展開されます。

fh-start-sending-sample-data

サンプルデータの投入方法は簡単です。

"Start sending demo data"のボタンをクリックするとサンプルデータが継続して投入されます。

データ投入が不要になったら"Stop sending demo data" のボタンをクリックするだけです。

fh-stop-sending-sample-data

CloudWatch メトリクスの確認

サンプルデータを投入後、しばらく放置すると、データが蓄積され、メトリクスも記録されます。

ストリーム詳細画面の「Monitoring」タブで表示された実際のメトリクスが以下です。

fh-metrics

サンプルデータについて

株価をシミュレートしたデータが生成され、Kinesisに投入されます。具体的には、以下のようなデータ構造をしています。

{"TICKER_SYMBOL":"QXZ", "SECTOR":"HEALTHCARE", "CHANGE":-0.05, "PRICE":84.51}

Kinesis Analytics のサンプルデータと同じです。

サンプルデータの種類は現時点ではこの1種類のようです。

サンプルデータの確認

S3 のデータをAWS CLI経由で確認します。

# リージョンをアイルランドに変更
$ export AWS_DEFAULT_REGION=eu-west-1
# S3 バケットのオブジェクトをローカルに同期
$ aws s3 sync s3://YOUR-BUCKET-NAME .
# ローカルファイルシステムの確認
$ tree PREFIX2016
PREFIX2016
└── 11
    └── 08
        └── 13
            ├── PREFIX-1-2016-11-08-13-15-43-2fb8c27c-2dab-4c9c-a596-67162ef0f122
            └── PREFIX-1-2016-11-08-13-20-44-5cdcf999-750e-43ee-a368-795e2e60d063
# データの中身を確認
$ cat PREFIX-output2016/11/08/13/PREFIX-1-2016-11-08-13-20-44-5cdcf999-750e-43ee-a368-795e2e60d063
{"TICKER_SYMBOL":"DFT","SECTOR":"RETAIL","CHANGE":4.08,"PRICE":113.84}...{"TICKER_SYMBOL":"XTC","SECTOR":"HEALTHCARE","CHANGE":1.87,"PRICE":163.97}

ストリームデータが改行なしに、1行で出力されています。

注意点

サンプルデータを投入中も、ストリームにはデータ送信可能です。つまり、本来のデータとサンプルデータが混ざる可能性があります。

サンプルデータの投入は、関係者に通知の上、限定的に使用すべきでしょう。

要望

サンプルデータのデータ形式を複数の種類から選べたり、データ構造をカスタマイズできるようになるとより利便性が高まると思います。

Kinesis Analyticsに続いて、Kinesis Firehose もサンプルデータのストリーム投入に対応しました。 昔ながらの Kinesis Streams にも対応すると嬉しいですね。

Kinesis Streams対応とサンプルデータのデータ型のカスタマイズが対応されると、Kinesis StreamsからLambda連携の試験も簡単にできちゃいます。

まとめ

Amazon Kinesis Firehose のサンプルデータを管理画面から投入する方法を紹介しました。

Kinesis の API を直接叩いてテストデータを投入しようとすると、Kinesis のアプリよりの仕様や SDK を使ったプログラム開発が発生するため、インフラエンジニアには若干敷居が高いという課題がありました。

今回のサンプルデータ対応により、疎通確認が以前よりもずっと楽にできるようになったのではないでしょうか。

参考