ソモサン

私rohkiによる活動や読書の記録をつらつらと書くページです

CLI で AWS Kinesis Stream の中身をひたすら追ってくれる k-iter をつくってる

作ったもの

github.com

インストール方法

rustup.rs - The Rust toolchain installer

rustup を設定したうえで、下記コマンドを実行。

cargo install --git https://github.com/ROki1988/k-iter.git

もしくは Releases · ROki1988/k-iter より合致するものをダウンロードして展開。

使い方

k-iter -n event-stream -r ap-northeast-1

n の後にストリーム名を、r の後にリージョン名を入れればガンガン見てくれます。
今のところはコマンド実行以降に Put されたレコードを見ていくだけです。

動機

AWS Kinesis Stream はいったん投入してしまうと、中になにが入ってるか追うためにコードをかく必要があります。コンソールから見れないから。
Lambda の Blueprint に Kinesis のイベントを処理するぜー、てのもあるのですが、CLI に出したい、という欲がでます。
ですので、秘伝のたれのごとき Python コードを実行して CLI 上で出してました。

だがしかし、迂闊に brew upgrade を実行した結果、Python の実行環境が再構築の憂き目にあい、こりゃシングルバイナリで動くやつ作らにゃきつい、となった次第です。

Rust 製なのは趣味です。

やってみたいこと/考えてること/もらえた意見

  • 実行バイナリはよ
  • Verbose モードとかほしい。Put された時間とかパーティションキーとか
    • 綺麗に出さなければできそう。きれいに出そうとすると大変そう。そのあたりのセンス磨いてないし。
      • CSV を整形するコマンドとかあるし、CSV 出力でこと足りる?
  • Iterator Type 対応したい。TRIM_HORIZON とか。
    • オプションに依存関係が出てくるので、ちょいと厄介
      clap-rs の修行が必要そう
  • --exec とか作ってデータに処理かけたい
    • jq かけたりするイメージ。やりたくない?
  • UTF-8 文字列決め打ちで出力してるけど、バイナリ表示の需要もありそう?
    • Big とか Little の切り替えもいるのだろうか。--print-format=string|byte-be|byte-le てな感じ
  • Shard 複数を同時に
    • できっかなぁ…