この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
背景
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アプリケーションを作成しましょう。