LoginSignup
4
2

More than 5 years have passed since last update.

AWS CLIを使ったKinesisチュートリアル

Last updated at Posted at 2018-06-11

概要

kinesisの管理画面では、Data Streamの中にデータが入っているのかわからない。
結果として、AWS CLIでKinesisに直接データを突っ込んで様子をみるのが一番わかりやすい。
この記事では、Kinesisのレコードに実際にデータを追加し、管理画面でどのように表示されるかを確認するまでやります。
主に以下のURLを参考にチュートリアルを進めていきます。

AWS DOCS - 基本的なストリームオペレーションの実行

AWS CLIでKinesisに直接データをつっこむ

以下、Kinesis Data Streams のアーキテクチャの概要
Kinesis Data Streams のアーキテクチャの概要

ストリームの作成

KinesisでData Streamを作成する。
--stream-nameはストリームの名前、--shard-countはシャードの個数を指定。
ストリームの中に、シャードというキューを作るイメージ。
シャードは1つのストリームに複数個作成できて、そこに並列でデータを投入できる。

※ awsコマンドを実行する際、必要な人は --profile, --region オプションを追加してください

# ↓ 必要な場合は --profile, --region オプションを追加する
aws kinesis create-stream --stream-name <ストリーム名> --shard-count <シャード数>

ストリームの確認

ストリームが作られているかは、以下のコマンドで確認

ストリームの状態を表示

aws kinesis describe-stream --stream-name <ストリーム名>
# "StreamStatus": "ACTIVE" となれば、ストリームが完成

ストリームの一覧を表示

aws kinesis list-streams
# "StreamNames": に設定したストリーム名があればOK

レコードを入力する

KinesisのData Streamの中にシャード(キューのようなもの)があり、その中にレコード(データ)を追加していく。

文字列をレコードに登録する場合

# `--partition-key` はどのシャードにデータを送るかをハッシュ値を使って決めてくれる 

# "ShardId": "shardId-000000000000" と出力されればOK
aws kinesis put-record --stream-name <ストリーム名> --partition-key 123 --data <レコードに保存したい文字列>

jsonファイルをレコードに登録する場合

a. jsonファイルの作成

{
  "Records": [
    {
      "Data": "<レコードに保存したい文字列1>",
      "PartitionKey": "123"
    },
    {
      "Data": "<レコードに保存したい文字列2>",
      "PartitionKey": "123"
    }
  ],
  "StreamName": "<ストリーム名>"
}

b. jsonファイルの登録

# "FailedRecordCount": 0 と出力されればOK
aws kinesis put-records --cli-input-json file://<jsonファイルへのフルパス>

参考URL

レコードの確認

get-record.sh というファイルを作成し、以下をコピペ、<ストリーム名>を修正

#!/bin/bash
SHARD_ITERATOR=$(aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name <ストリーム名> --query 'ShardIterator')

aws kinesis get-records --shard-iterator $SHARD_ITERATOR

スクリプトを実行

./get-record.sh
# "Data":"XXXXXXX", の部分が入力したデータ

get-recordした結果、Dataによくわからない文字列が入っている。
これは、入力したデータをKinesisがBase64 エンコーディングしているから文字化けしているように見える。
Base64 デコーディングをすると元のデータが見れる。
Base64 デコーディングしてくれるサイト: https://www.base64decode.org/

ストリームの削除

一度作ったストリームは課金されるので、必要ない場合は削除する

aws kinesis delete-stream --stream-name <ストリーム名>

ストリームが本当に削除されたかを確認

aws kinesis describe-stream --stream-name <ストリーム名>
# A client error (ResourceNotFoundException) が出力されればOK

AWSコンソールでKinesisのData Streamにデータが送られていたかを確認

AWS Kinesis → Data Stream → ストリーム名 → モニタリングへ移動
受信データ (バイト) — 合計 と 受信データ (数) — 合計 の図を確認

※ 以下は画像が古いが、こんな感じでモニタリングできる
ストリームの詳細

図の中に青い丸、もしくは青い線があればOK
※ 上の赤い線は制限値(Maxの値)なので無視してOK

まとめ

Kinesis はライブラリから使うことが多いので、実際の動きを把握できていないひとも多いと思う。
AWS CLIを使ってKinesisにデータがどのように追加されるのかを確認すると理解が捗る。
また、データが追加されたときの管理画面の挙動もわかるのでおすすめ。

その他、参考URL

Qiita - PythonでKinesis操作する
Developers.IO - AWS SDK for JavaでKinesisにアクセスする

お読みいただき誠にありがとうございました。 m(_ _)m

4
2
1

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
2