はじめに
KDG(Amazon Kinesis Data Generator)とは
AWSでストリーミングデータ処理サービス(Kinesis Data Streams, Data Firehose)を実装する際、
検証としてダミーのストリーミングデータを使いたい場合があるかと思います。
この時、ストリーミングデータのテストを行うときのツールとして、
Amazon Kinesis Data Generator (以下KDG)が提供されています1。
Data Firehoseのコンソールからも「デモデータでテスト」が可能ですが、
KDGを使うと、送信間隔など細かい設定が可能です
本記事の内容
本記事では、KDGを使うまでの手順を残しています。
以下ページを参考にしています。
準備
Firehoseの作成
KDGのデータ配信先として設定するData Firehoseを事前に作成しておきます。
GitHubプロジェクトをクローン
KDGのGitHubプロジェクト2をローカルリポジトリにクローンします。
デプロイファイルを準備
KDGの実行環境はCloudFormationテンプレートを使ってデプロイするため、
テンプレートyamlファイルの格納先となるS3バケットへの記述となるようにスクリプトを修正します。
#!/bin/bash
aws s3 cp ../setup/cognito-setup.yaml s3://<テンプレートyamlファイル格納先S3バケット>/cognito-setup.yaml
コマンドラインからCLIアップロードします。
$ cd amazon-kinesis-data-generator/deploy/
$ ./deploy.sh
upload: ../setup/cognito-setup.yaml to s3://qiita-tamabe-bucket/cognito-setup.yaml
KDG実装
CloudFormationでAmazon Cognitoユーザーを作成
アップロードしたyamlファイルからCloudFormationスタックを作成します。
まずYAMLファイル格納先のURLをコピーして、
CloudFormationスタックの作成画面で貼り付けて、「次へ」。
「AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。」をチェックし、「次へ」
ここまでの設定確認画面の内容を最終確認し、「送信」
これで、KDGのデプロイが行われます。
KDG利用
KDGへのログイン
CloudFormationスタックの作成が完了したら、出力タブに移動します。
「KinesisDataGeneratorUrl」の値(KDGのURL)をクリックすると、KDGログイン画面に遷移するので、
先程Stack作成時に登録したCognitoユーザー情報を入力します。
Firehoseとの接続設定
送信頻度の設定
「Constant」と「Periodic」のモードが選択できて、
「Constant」の場合は、送信間隔(秒)、データ圧縮可否を選択できます。
「Periodic」の場合は、より細かい送信スケジューリングが可能です。
データ用のレコードテンプレートを作成
テンプレートは、任意のデータ構造を設定できるようです。
{
"sensorId": {{random.number(50)}},
"currentTemperature": {{random.number(
{
"min":10,
"max":150
}
)}},
"status": "{{random.arrayElement(
["OK","FAIL","WARN"]
)}}"
}
画面下部の「Test template」をクリックすると、生成されるレコードのサンプルを確認できます。
テストデータ生成
画面下部の「Send data」をクリックすると、実際にストリーミングデータが配信されます。
データ配信開始後、「Stop Sening Data to Kinesis」を押さないとデータ配信が続くので注意ください
送信結果の確認
Data Firehoseの送信先S3バケット/プレフィックスを確認すると、
「YYYY/MM/dd/HH」(UTC) のプレフィックスが自動作成され、その配下にデータを確認できました。
データを開くと、テンプレートに基づいたデータ構造のレコードが入っていました。
参考URL
この記事で参考にしたURLです。
-
AWSブログ:Amazon Kinesis Data Generatorを使用してストリーミングデータソリューションをテストする
https://aws.amazon.com/jp/blogs/news/test-your-streaming-data-solution-with-the-new-amazon-kinesis-data-generator/ ↩ -
GitHub:amazon-kinesis-data-generator
https://github.com/awslabs/amazon-kinesis-data-generator ↩