【ツール活用|初心者向け】Terraformのコストを「デプロイ前」に把握する!Infracost導入のすすめ

導入:なぜ「デプロイ前のコスト可視化」が必要なのか

インフラエンジニアの皆さん、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を導入して、コードだけでなく「コスト」も管理できるエンジニアを目指しましょう!

コメント

タイトルとURLをコピーしました