Infracost CloudとGitHubリポジトリを連携してみた
InfracostはTerraformテンプレートからAWS等のクラウドのコストを試算できるツールです。
Infracost CLIやInfracost VS Code拡張機能は無料で利用が可能です。
その他に有料版として、Infracost Cloudがあります。こちらはSaaS版です。
2週間分の無料トライアルがついているため、期間内であれば無料で検証できます。
今回は、Infracost CloudをGitHubリポジトリと連携するところまでやってみました。
やってみた
公式の手順を参考にします。
Infracost Cloudにサインアップまたはログイン
Infracost Cloudにサインアップまたはログインします。
ログインが完了すると以下のダッシュボードが表示されます。
GitHub OrgにInfracost用GitHub Appをインストールする
画面右上のSettings
-> Org Settings
-> Integrations
-> Add integrations
の順に選択します。
今回は個人用のGitHubリポジトリを連携するため、GitHub.com and Enterprise Cloud
を選択しました。
or continue to GitHub to add a new installation
を選択して、GitHub OrgにGitHub Appをインストールします。
必要に応じて、アクセス可能なリポジトリを制限してインストールします。
GitHubリポジトリと接続する
Infracost Cloudに戻って、リポジトリの接続を行います。
接続するリポジトリを選択します。
接続設定の画面に遷移します。今回はデフォルトのままにします。
Infracost Cloud上でリポジトリを確認してみる
ブログ用のサンプルコードを管理しているリポジトリに接続しました。
以下のように全体の削減額やリポジトリごとの削減額を確認できました。
Projectの詳細を見ると、リソースレベルのコストも確認できます。
Failing policies
の部分を確認すると、リポジトリ内のコスト関連の提案を確認できます。
例)
- EC2 Graviton instanceを利用する
- EC2 最新世代のインスタンスを使用する
- ECR ライフサイクルポリシーを設定する
リポジトリ内の該当リソースも確認できます。修正対応が捗りそうです。
GitHubリポジトリに Pull Requestを作成する
EC2を作成するPull Requestを連携しているリポジトリに作成しました。
# 省略
data "aws_ami" "amazon_linux" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["amzn2-ami-hvm-*-x86_64-gp2"]
}
}
resource "aws_instance" "web" {
ami = data.aws_ami.amazon_linux.id
instance_type = "t2.micro"
}
Infracost Cloudが自動でPull Requestにコストの試算結果をコメントしてくれました。
Infracost Cloud上でもPull Requestを確認可能です。
今回インスタンスタイプをt2.micro
にしていたため、最新のインスタンスファミリーを使うこと・Gravitonベースのインスタンスを使うことを提案されていますね。
GitHub連携することで、リソース作成前に自動でコストの試算やチェックができます。
意図せず高額になったり、余分なコストがかかる構成でリソースを作成することを防止できそうです。
おわりに
Infracost Cloudを試してみました。
VSCode拡張機能としてInfracostを使っていましたが、今回始めてCloud版を使いました。
GitHub連携が簡単で、ワークフロー内にコスト試算とチェックを簡単に組み込むことができました。
生成AIの発展でIaCコードの作成ハードルは下がっており、コードの質を担保するのが今後の課題になってくるかと思います。
生成AIでコード生成・Infracostでコスト最適化チェックのように併用することでスピードと品質の向上に役立ちそうです。
記事執筆時点ではプライベートベータですが、チェックで検出した問題の修正用Pull Requestを自動で生成する機能もあります。パブリックベータかGAになったタイミングで試してみたいと思います。