導入:なぜ「デプロイ前のコスト可視化」が必要なのか
インフラエンジニアの皆さん、Terraformで構成変更を行った際、「うっかり高価なインスタンスタイプを選択してしまい、翌月の請求書を見て驚愕した」という経験はありませんか?
インフラの変更は、時に数千円、時には数万円単位のコスト変動を伴います。しかし、多くの現場では「デプロイ後にコストが確定する」のが現状です。Infracostは、この「コストのブラックボックス化」を解消し、プルリクエスト(PR)作成時に「今の変更で月額費用がいくら増えるのか」を自動で通知してくれる強力なツールです。これにより、開発段階からコストを意識した設計(FinOps)が可能になります。
基礎知識:InfracostとFinOpsの役割
FinOps(フィノプス)とは、クラウドのコストを「予測可能で、かつビジネス価値を最大化するもの」として管理する文化や手法のことです。
Infracostは、Terraformのコード(planファイル)を読み取り、クラウドプロバイダーの価格APIと照合して、具体的な見積もりを算出します。これをCI/CDパイプラインに組み込むことで、PR上に「+5,000円」といった差分を表示し、コードレビューの段階でコストの妥当性を判断できるようになります。
実装:Infracostの導入手順
導入は非常にシンプルです。以下の手順でセットアップします。
1. Infracostのインストール(公式サイトのバイナリ取得)
2. APIキーの取得(無料アカウント登録)
3. CI/CD環境(GitHub Actionsなど)での設定
サンプルプログラム:GitHub Actionsでの自動化設定
以下のコードを.github/workflows/infracost.ymlとして保存することで、PRが作成されるたびにコスト見積もりがコメントされます。
name: Infracost
on: [pull_request]
jobs:
infracost:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Infracost
uses: infracost/infracost-action@v2
with:
api-key: ${{ secrets.INFRACOST_API_KEY }}
- name: Run Infracost
run: |
infracost comment github –path=infracost.json \
–repo=$GITHUB_REPOSITORY \
–pull-request=${{ github.event.pull_request.number }} \
–github-token=${{ secrets.GITHUB_TOKEN }}
env:
INFRACOST_API_KEY: ${{ secrets.INFRACOST_API_KEY }}
応用・注意点:現場で役立つ運用のコツ
1. 全てのコストを網羅できるわけではない
Infracostはあくまで「APIで価格が公開されているリソース」の概算です。データ転送量や複雑な従量課金、一部のサードパーティ製品のコストは反映されない場合があります。「目安」として活用しましょう。
2. コストの「差分」に注目する
合計額ばかりに目を奪われがちですが、重要なのは「前回の構成との差分」です。レビュー時には「なぜこの変更でコストが増加するのか」「このインスタンスタイプで本当に要件を満たせるか」という議論を、コストを根拠に行うことが大切です。
3. セキュリティへの配慮
InfracostはTerraformのプランファイルを読み取ります。極秘情報が含まれる環境では、ローカルやセキュアな環境で実行するよう構成を調整してください。
今日からInfracostを導入して、コードだけでなく「コスト」も管理できるエンジニアを目指しましょう!

コメント