Kinesis Data GeneratorでKinesis Data Streamsにテストデータを投入する
背景
Kinesisを使ったストリーミングデータ処理を効率的に開発して動作確認するためには、テストデータを継続的に投入する必要があります。
今回はAWS公式のKinesis Data Generatorというツールを使う方法をご紹介します。
How It Works
Kinesis Data GeneratorのCFnでCognito関連リソースを作成し、自身のAWSアカウントに対するKinesisの権限をブラウザアプリに発行できるようにします。
CFn実行時に指定するユーザー名とパスワードでCognito UserPoolsのユーザを作成して、Cognito Federated Identityから以下の権限を取得できるようにカスタムリソースを作成・実行します。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "kinesis:DescribeStream", "kinesis:PutRecord", "kinesis:PutRecords" ], "Resource": [ "arn:aws:kinesis:*:*:stream/*" ], "Effect": "Allow" }, { "Action": [ "firehose:DescribeDeliveryStream", "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": [ "arn:aws:firehose:*:*:deliverystream/*" ], "Effect": "Allow" }, { "Action": [ "mobileanalytics:PutEvents", "cognito-sync:*", "cognito-identity:*", "ec2:DescribeRegions", "firehose:ListDeliveryStreams", "kinesis:ListStreams" ], "Resource": [ "*" ], "Effect": "Allow" } ] }
CFn実行後、Kinesis Data GeneratorのSPAからUserPoolsへの接続情報を入力してログインします。あとはテストデータのテンプレートを作成して実行ボタンを押すと、SPA内でテストデータを生成して直接Kinesis Data Analyticsにテストデータを投入し続けてくれます。
Kinesis Data Generatorのドキュメントにも記載されていますが、このテンプレート機能はFaker.jsを使って実現されています。テンプレートを作成する際は、そちらのドキュメントを参照しましょう。
この方法の利点
- CFnで展開するだけで簡単に利用を始められる
- AWS公式ツールなので安心できる
- テンプレートを使ったランダムなテストデータを作成できる
- テストデータを投入し続けられる
手順
事前準備
AWSアカウントの作成とログインと、CFn実行に必要な権限があるか確認をしておきます。
オプションで、テストデータを投入したいKinesis Data Streamsのリソースを作成しておけばスムーズな動作確認ができます。
リソースの展開
ドキュメントをブラウザで表示し、"Create a Cognito User with CloudFormation"をクリックします。
クリックするとCFnの画面に遷移します。テンプレートURLを確認して次の画面に進みます。
CFnが作成するユーザー名とパスワードを入力します。ここで入力した値は、後ほどKinesis Data Generatorのログイン時に利用するので、忘れないようにしてください。
なお、CFnのパラメータセクションは以下のようになっています。
"Parameters" : { "Username": { "Description": "The username of the user you want to create in Amazon Cognito.", "Type": "String", "AllowedPattern": "^(?=\\s*\\S).*$", "ConstraintDescription": " cannot be empty" }, "Password": { "Description": "The password of the user you want to create in Amazon Cognito.", "Type": "String", "NoEcho": true, "AllowedPattern": "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{6,}$", "ConstraintDescription": " must be at least 6 alpha-numeric characters, and contain at least one number" } },
パラメータを入力したらスタックを作成します。成功すると、以下の画像のようにURLが出力されます。
Generatorを使ってデータを投入する
CFnスタックにあるリンクをクリックして、Kinesis Data Generatorの画面に遷移します。CFnを実行した際Parametersに入力したユーザー名とパスワードでログインします。
ログイン後、以下のフォームでリージョン、Kinsis Data Streams名、データ投入速度を入力します。
あとはテンプレートを入力すれば準備完了なのですが、実際に送信するまえにテンプレートのテストをしましょう。
AWS公式ブログのサンプルを入力してみます。
{ "sensorId": {{random.number(50)}}, "currentTemperature": {{random.number( { "min":10, "max":150 } )}}, "status": "{{random.arrayElement( ["OK","FAIL","WARN"] )}}" }
入力したテンプレートに問題が無ければ、以下のようにデータのサンプルが表示されます。
問題なければ、"Send data"をクリックしてデータの投入を開始しましょう。
まとめ
AWS公式の開発補助ツール Kinesis Data Generatorの使い方を例示しました。このツールを活用して、効率的にKiensisアプリケーションを作成しましょう。