1. はじめに
現在、AWS SAA(ソリューションアーキテクト - アソシエイト)の資格取得に向けて学習しています。
AWSのハンズオン学習で最も怖いのが、リソースの消し忘れによる予期せぬ課金です。
「せっかくなら、消し忘れたら教えてくれる仕組み自体を自分で構築してしまおう!」と考え、触りたかったTerraformを使ってコスト削減のためのアラート機能を構築しました。
2. 今回構築した構成
毎日 20:00(JST)に起動中のEC2をチェックし、1台でも稼働していればAmazon SNSを通じてメール通知を飛ばす仕組みです。
- Amazon EventBridge: スケジュール実行(毎日20時)
- AWS Lambda: Python 3.14 を使用。EC2の状態を取得し、SNSへ通知
- Amazon SNS: メール通知のハブ
3. ソースコード
インフラの定義(Terraform)と、Lambdaのロジック(Python)を分離して管理しています。コードの全文はGitHubに公開しました。
4. 構築で意識したポイント・学んだこと
実務ではオンプレの設計・構築がメインでIaCにも触れたことありませんでしたが、今回AWSやTerraformに触れてみて、以下の気づきがありました。
クラウドの権限管理の再認識
SAAでも頻出のところですが、構築の過程で、IAMポリシーの最小権限(ReadOnly等への絞り込み)を改めて見直しました。SAAではそれぞれの権限で何ができるかまでは問われないので、触ってみると意外と設定が難しかったです。
差分管理(Plan)の安心感
コンソール操作だと「どこをどう変えたか」が記憶頼みになりがちですが、Terraformは plan コマンドで実行前に変更箇所をすべて可視化してくれます。意図しない設定変更や削除を防げるこの安心感は、IaCならではの大きなメリットだと感じました。
コードがそのまま最新の設計書になる
今まではExcelなどでパラメータシートを作成していましたが、Terraformならコードそのものが最新の構成を正しく表す設計書になります。パラメータの修正もコードを1箇所書き換えるだけで完結し、管理の効率が劇的に上がると確信しました。
5. おわりに
SAA試験に向けてハンズオン学習をほぼやってなかったですが、試行錯誤しながらやると頭に入ってきやすく感じました。クラウドの勉強のつもりでやってましたが、どちらかというとIaCの便利さの方が強く感じたので、今後も触っていきたいです。
実行環境
- Terraform v1.x
- AWS Provider v5.x
- Python 3.14
