🐕

Kinesis Data Streamのコンソール上で Data Viewer 試してみた

2022/11/01に公開

Kinesis Data Streamでデータをコンソールで見られるようになったということで試してみました。

https://aws.amazon.com/about-aws/whats-new/2022/10/amazon-kinesis-data-streams-capability-inspect-data-records-aws-management-console/

https://docs.aws.amazon.com/streams/latest/dev/data-viewer.html

やってみた

こちらのチュートリアルに沿って進めます。CLI V1の書き方なので、V2を使っている場合はオプション指定が必要です。

https://docs.aws.amazon.com/streams/latest/dev/fundamental-stream.html

ストリーム作成、確認、ストリーム一覧

aws kinesis create-stream --stream-name Foo
aws kinesis describe-stream-summary --stream-name Foo
aws kinesis list-streams

コンソールと見ると、Fooという名前のストリームができています。以下は、DataViewrのタブを開いた状態。

レコード挿入

aws kinesis put-record --stream-name Foo --partition-key 123 --data testdata --cli-binary-format raw-in-base64-out

挿入結果を見てみます。Starting positionはTrim horizonにします。Data名の表記が文字化けしているものは、オプションつけずにput-recordしたものです。

TODO (Starting position: Latestでは取得できませんでした。なぜ。。。??)

base64らへんで失敗したとき

"testdata"という文字列データを挿入すると、成功するが、上記の文字化けのレコードになる。

aws kinesis put-record --stream-name Foo --partition-key 123 --data testdata

"testdata2"という文字列データを挿入。Invalid base64: "testdata2"

aws kinesis put-record --stream-name Foo --partition-key 123 --data testdata2

なぜtestdataはエラーにならないのか、ということでbase64デコードしてみると、文字化けしてますが、できてしまいました。これはやってしまった感ありますね。

echo -n 'testdata' | base64 --decode
��-u�Z

クリーンアップ

削除コマンドは何も出力しません。

aws kinesis delete-stream --stream-name Foo

削除完了を確認するには、このコマンドでFooが見つからないというエラーが出ればOKです。

aws kinesis describe-stream-summary --stream-name Foo

# An error occurred (ResourceNotFoundException) when calling the DescribeStreamSummary operation: Stream Foo under account 111122223333 not found.

まとめ

Kinesis Data StreamのDataViewr機能でコンソール上からレコードの確認をしました。

Appendix 1

--cli-binary-format raw-in-base64-out

に関して。V2のドキュメントにはこう書かれています。

  • デフォルトではbase64を渡す
  • v1互換で文字列を渡す場合はraw-in-base64-outで設定

--cli-binary-format (string)
The formatting style to be used for binary blobs. The default format is base64. The base64 format expects binary blobs to be provided as a base64 encoded string. The raw-in-base64-out format preserves compatibility with AWS CLI V1 behavior and binary values must be passed literally. When providing contents from a file that map to a binary blob fileb:// will always be treated as binary and use the file contents directly regardless of the cli-binary-format setting. When using file:// the file contents will need to properly formatted for the configured cli-binary-format.

Appendix 2

base64エンコード・デコード

echo -n 'testdata' | base64
# dGVzdGRhdGE=

echo -n 'dGVzdGRhdGE=' | base64 --decode
# testdata

Discussion