Infracost
Infracost は IaC コードからクラウドサービスの利用料を試算するツール/サービスです。執筆時点では Terraform のみの対応ですが、ロードマップでは Pulumi, CDK, Bicep に対応予定のようです。
導入
VSCode および Infracost Cloud での利用法を記載します。
CLI 利用や CI/CD ワークフローへの導入も可能です。公式サイトを確認ください。
VSCode の拡張機能から Infracost
を検索してインストールします。その後画面の指示に従いサインアップします。私は GitHub アカウントを利用しました。後述の Infracost Cloud でのコスト試算を行う場合は、連携する VCS を選択するまで実施してください。
VSCode でコスト試算
Terraform コードを含むフォルダを VSCode で開くと自動でコスト試算を表示してくれます。
VSCode のワークスペース機能で複数のフォルダを開いていると、拡張機能が正しく動作しません。これはかなり残念ポイントです。
Infracost Cloud でコスト試算
Infracost Cloud ではより詳しく確認できます。サインアップしてから 2 週間無料で利用できます。期限を過ぎると CLI を除く機能は有料のサブスクリプションが必要になるようです。
ダッシュボードでは 5 項目について、コスト最適化設定の達成率を表示してくれます。
リポジトリを調査してみます。もちろんコスト試算はしてくれるのですが、なにやら FinOps policies と Tagging policies に違反するリソースがあることが分かりました。
Infracost が用意するポリシーが気になるので、調べてみましょう。画面上部の Governance から FinOps policies をクリックします。指摘済みの CloudWatch Logs のログ保持期間以外にも様々なポリシーがあることが分かります。個別にポリシーの ON/OFF もできるようです。
Tagging policies も確認します。デフォルト設定は以下の通りです。タグ付けの強制はクラウドサービス側で行うのが定石かと思いますが、Infracost 側から行うこともできそうです。
まとめ
Infracost を利用すると、IaC 化さえしていればコスト試算が簡単に行えます。一方で VSCode の拡張機能はワークスペース利用時に正常動作しなかったり、一部計算の表示がおかしかったりすることが分かりました。改善に期待です。
Infracost Cloud はコスト試算に加え、コスト最適化のベストプラクティスを指摘してくれるのため、一度目を通す価値はあると思います。ただしあくまでコスト影響のあるパラメータに対する指摘であり、ワークロードに対する最適なアーキテクチャを教えてくれるわけではありません。これは業務の中で身につけていきたいです。