インフラストラクチャドリフト
IaC で定義した状態と実際のインフラの状態が乖離する問題
IaC運用
インフラストラクチャドリフトとは
インフラストラクチャドリフト (Infrastructure Drift) は、IaC (CloudFormation, Terraform) で定義した状態と、実際のインフラの状態が乖離する問題である。手動変更 (コンソール操作) が主な原因。
なぜ発生するか
1. CloudFormation でセキュリティグループを作成 (ポート 443 のみ許可)
2. 障害対応で手動でポート 22 を追加 (コンソールから)
3. CloudFormation のテンプレートにはポート 22 がない
→ テンプレートと実態が乖離 (ドリフト)
| 原因 | 例 |
|---|---|
| 手動変更 | コンソールから設定を変更 |
| 緊急対応 | 障害時に手動でリソースを変更 |
| 別ツールでの変更 | Terraform と CloudFormation の併用 |
| 外部サービスの変更 | AWS が自動的に設定を変更 |
ドリフトの検出
CloudFormation
Terraform
# 現在の状態と定義の差分を表示
terraform plan
# → 手動変更があれば差分として表示される
ドリフトの修正
手動変更をテンプレートに反映してデプロイする方法、手動作成したリソースを IaC にインポートする方法、テンプレートの状態に戻して手動変更を元に戻す方法がある。
ドリフトの予防
IAM で手動変更を制限してコンソール操作を禁止し、CI/CD でのみデプロイする。EventBridge + Lambda で定期的にドリフトを自動検出し、AWS Config でリソースの設定変更を監視する。
イミュータブルインフラとの関係
イミュータブルインフラストラクチャでは、サーバーを変更せず丸ごと置き換えるため、ドリフトが発生しない。Lambda + DynamoDB のサーバーレス構成も、サーバーの概念がないためドリフトが起きにくい。
基礎から学ぶなら関連書籍が手がかりになる。