[PR] あなたが Kindle で読みたいその本、Kindle に対応したら Twitter でお知らせします。

Golang で AWS の請求額を取得するコマンドを書いた

Posted on

数年前までインフラ界隈の OSS は Ruby で開発されることが多かったと思いますが、最近は Golang がメインストリームになりつつあります。有名どころでは HashiCorpDocker が採用していますし、個人で開発されている HugoSTNS も 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 のソースコードを読みながら学んでいこうと思います。