Golang で AWS の請求額を取得するコマンドを書いた
数年前までインフラ界隈の OSS は Ruby で開発されることが多かったと思いますが、最近は Golang がメインストリームになりつつあります。有名どころでは HashiCorp や Docker が採用していますし、個人で開発されている Hugo や STNS も Golang で書かれています。
この流れを受けて、必然的に Golang のソースコードを読む機会が増えてきました。ただ、バグを見つけて Pull request を送ろうと思っても、Golang が書けないので Issue を上げることしかできなかったことがあります。
プログラミング言語が壁になって OSS に貢献できないのはエンジニアとして悔しいので、連休中に勉強を兼ねてちょっとしたコマンドを Golang で書いてみました。
AWS の請求額を取得するコマンド
freee ではサービスの品質を落とさずに、インフラコストをいかに抑えるかが課題のひとつになっています。なので、普段の会話の中でも「今月はいくら使ってる?」と聞かれることがよくあります。
会話の最中にいちいち Management Console を開くのが面倒だなぁと感じていたので、その不便さを解消するために作ったのが今回の aws-billing
コマンドです。エンジニアならターミナル上で確認したいですよね。
その名の通り、AWS の請求額を表示するだけのコマンドです。データは CloudWatch から取得しています(なので、リアルタイムの請求額ではなく概算です)。ゆくゆくはサービスごとのコストも出したいと思っていますが、今はトータルコストだけ対応しています。
$ aws-billing
Billing: 18.83
GitHub の Releases ページに macOS と Linux 用のビルド済みバイナリファイルをアップロードしています。ダウンロードして実行権限を付けるだけで使えますので、興味のある方はぜひお試しください。
ワンバイナリなので Slack bot などに組み込むのも簡単だと思います。
参考にしたサイトや書籍
Golang を学ぶにあたって参考にしたサイトや書籍です。
A Tour of Go で言語の雰囲気を掴んで、『スターティング Go 言語』で基礎固めをしました。言語の基本機能として GitHub と連携するなど、他の言語にはない特徴があるので『スターティング Go 言語』を読んでから取り組んだのは良かったです。
まとめ
自分は LL 言語や Scala が書けるものの、C 言語はまったく書けません。ですが、Golang はシンプルな言語なので苦労することなくすんなり馴染めました。
Ruby と同じように Golang も避けては通れない言語になりつつあるので、OSS のソースコードを読みながら学んでいこうと思います。