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から以下の権限を取得できるようにカスタムリソースを作成・実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | { "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のパラメータセクションは以下のようになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | "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公式ブログのサンプルを入力してみます。
1 2 3 4 5 6 7 8 9 10 11 12 | { "sensorId" : {{random.number(50)}}, "currentTemperature" : {{random.number( { "min" :10, "max" :150 } )}}, "status" : "{{random.arrayElement( [" OK "," FAIL "," WARN "] )}}" } |
入力したテンプレートに問題が無ければ、以下のようにデータのサンプルが表示されます。
問題なければ、"Send data"をクリックしてデータの投入を開始しましょう。
まとめ
AWS公式の開発補助ツール Kinesis Data Generatorの使い方を例示しました。このツールを活用して、効率的にKiensisアプリケーションを作成しましょう。