ECS Task definitionのDiffツール taskdiff を作りました

業務で ECS の Task definition を更新する作業が多々あります。CI/CD パイプラインや CloudFormation、Terraform などで管理していれば Git で差分確認が可能ですが、手動更新だとそうはいきません。 ECS では Task definition の差分を確認する API は提供されていない(ハズ)ので、勉強も兼ねて Golang で taskdiff という CLI ツールを作成しました。

github.com

使い方

使い方はシンプルです。例えば sample-app:1sample-app:2 の差分を確認したい場合は以下のように実行します。

$ taskdiff sample-app:1 sample-app:2

f:id:enokawaa:20201021164659p:plain

taskdiff sample-app:1 sample-app:2 | less のようにパイプで less に渡す使い方を僕はよくやります。

Diff ライブラリ選定

Go で Diff を出力するライブラリはいくつかあったのですが、シンプルな kylelemons/godebug/diff を選びました。sergi/go-diff も見てみたのですが、僕が Go (というかプログラミングそのもの..)を殆ど理解できていないため、浅はかですがコード量がそこまで多くないライブラリを選びました。といっても kylelemons/godebug/diff も理解しきれていませんが。。今後の宿題です。

これからやりたいこと

git diff のように差分がある行の前後 n 行だけ表示できたらもっと UX 上がりそうだなと思ったので、挑戦したいですね。(色も付けたいな... テストも書いてはみたものの、これで良いのかが分かりません。圧倒的にインプットが足りてないので様々なプロダクトのソースを読んだりして、テスト含めちょこちょこ改善していきます。

モチベーション

「自分が欲しいと思ったツールを作りたい」というのが強いです。実際業務でけっこう使っていて我ながら「便利だなぁ」と思う時もあります。だんだんと愛着も湧いてきたので、コツコツ育てたいと思います。

まとめ

taskdiff という ECS Task definition の Diff ツールを作成しました。ツッコミとかあれば GitHub の Issue やブコメTwitter のリプ or DM でいただけると嬉しいです。

github.com