4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BeeXAdvent Calendar 2024

Day 4

AWSでストリーミングデータをテストするときにKDGをつかってみる

Last updated at Posted at 2024-12-03

はじめに

KDG(Amazon Kinesis Data Generator)とは

AWSでストリーミングデータ処理サービス(Kinesis Data Streams, Data Firehose)を実装する際、
検証としてダミーのストリーミングデータを使いたい場合があるかと思います。
この時、ストリーミングデータのテストを行うときのツールとして、
Amazon Kinesis Data Generator (以下KDG)が提供されています1

Data Firehoseのコンソールからも「デモデータでテスト」が可能ですが、
KDGを使うと、送信間隔など細かい設定が可能です
image.png

本記事の内容

本記事では、KDGを使うまでの手順を残しています。
以下ページを参考にしています。

準備

Firehoseの作成

KDGのデータ配信先として設定するData Firehoseを事前に作成しておきます。

  • 送信先:任意のS3バケット/プレフィックス名を指定しました
  • バッファ間隔:早めに繰り返し確認できるように、300秒 → 10秒に設定しました
  • その他:デフォルト設定のまま
    image.png

GitHubプロジェクトをクローン

KDGのGitHubプロジェクト2をローカルリポジトリにクローンします。

デプロイファイルを準備

KDGの実行環境はCloudFormationテンプレートを使ってデプロイするため、
テンプレートyamlファイルの格納先となるS3バケットへの記述となるようにスクリプトを修正します。

deployディレクトリ内 deploy.sh の記述を更新
#!/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をコピーして、
image.png

CloudFormationスタックの作成画面で貼り付けて、「次へ」。
image.png

Cognitoユーザー情報となる値を登録し、「次へ」。
image.png

「AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。」をチェックし、「次へ」

ここまでの設定確認画面の内容を最終確認し、「送信」

これで、KDGのデプロイが行われます。

KDG利用

KDGへのログイン

CloudFormationスタックの作成が完了したら、出力タブに移動します。
image.png

「KinesisDataGeneratorUrl」の値(KDGのURL)をクリックすると、KDGログイン画面に遷移するので、
先程Stack作成時に登録したCognitoユーザー情報を入力します。
image.png

Firehoseとの接続設定

作成しておいたData Firehoseを選択します。
image.png

送信頻度の設定

「Constant」と「Periodic」のモードが選択できて、
「Constant」の場合は、送信間隔(秒)、データ圧縮可否を選択できます。
image.png

「Periodic」の場合は、より細かい送信スケジューリングが可能です。
image.png

データ用のレコードテンプレートを作成

テンプレートは、任意のデータ構造を設定できるようです。

サンプルテンプレート
{ 
    "sensorId": {{random.number(50)}}, 
    "currentTemperature": {{random.number( 
        { 
            "min":10, 
            "max":150 
        } 
    )}}, 
    "status": "{{random.arrayElement( 
        ["OK","FAIL","WARN"] 
    )}}" 
}

画面下部の「Test template」をクリックすると、生成されるレコードのサンプルを確認できます。
image.png

テストデータ生成

画面下部の「Send data」をクリックすると、実際にストリーミングデータが配信されます。

データ配信開始後、「Stop Sening Data to Kinesis」を押さないとデータ配信が続くので注意ください

image.png

送信結果の確認

Data Firehoseの送信先S3バケット/プレフィックスを確認すると、
「YYYY/MM/dd/HH」(UTC) のプレフィックスが自動作成され、その配下にデータを確認できました。

image.png

データを開くと、テンプレートに基づいたデータ構造のレコードが入っていました。
image.png

参考URL

この記事で参考にしたURLです。

  1. AWSブログ:Amazon Kinesis Data Generatorを使用してストリーミングデータソリューションをテストする
    https://aws.amazon.com/jp/blogs/news/test-your-streaming-data-solution-with-the-new-amazon-kinesis-data-generator/

  2. GitHub:amazon-kinesis-data-generator
    https://github.com/awslabs/amazon-kinesis-data-generator

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?