Kinesis Data Streamのコンソール上で Data Viewer 試してみた
Kinesis Data Streamでデータをコンソールで見られるようになったということで試してみました。
やってみた
こちらのチュートリアルに沿って進めます。CLI V1の書き方なので、V2を使っている場合はオプション指定が必要です。
ストリーム作成、確認、ストリーム一覧
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