クラウド利用の拡大に伴い、組織全体でのコスト管理とガバナンスがますます重要になっています。従量課金モデルのAWSでは、「どのサービスを」「誰が」「どれだけ使っているか」を常に可視化・統制する体制が求められます。
本章では、以下の観点からAWSコスト統制とFinOps強化の実践方法を解説します。
- Organizationsによるマルチアカウント統制
- 請求アラートとCost Anomaly Detectionによる異常検知
- タグベースのコスト分析とFinOps設計
- AWS Budgets連携とSlack通知によるアラート自動化
1. Organizationsによるマルチアカウント統制
なぜマルチアカウント管理が必要か?
AWS Organizationsを活用することで、複数アカウントを一元管理し、セキュリティ・コスト・権限管理をポリシーベースで行えます。
主な構成例:
- 1つのマスター(管理)アカウント
- 業務ごとに分離された子アカウント(prod / dev / sec / billing など)
- OU(組織単位)によるグルーピング
SCP(Service Control Policies)で制限
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:TerminateInstances", "Resource": "*" } ] }
SCPにより、「すべてのIAMユーザー/ロールに対して絶対に許可しない操作」を組織単位で定義可能です。
2. 請求アラートとCost Anomaly Detection
請求アラート(Billing Alarm)
CloudWatchを使って、月額請求額の閾値超えを通知できます。
# 請求アラーム作成(CLI) aws cloudwatch put-metric-alarm \ --alarm-name BillingAlarm \ --metric-name EstimatedCharges \ --namespace AWS/Billing \ --statistic Maximum \ --period 21600 \ --threshold 1000 \ --comparison-operator GreaterThanThreshold \ --evaluation-periods 1 \ --alarm-actions arn:aws:sns:ap-northeast-1:123456789012:NotifyMe \ --dimensions Name=Currency,Value=USD
Cost Anomaly Detection(異常検知)
機械学習ベースで、日常の利用パターンと乖離したコスト変動を自動検出し、通知してくれます。
検知対象:
- サービス別(例:EC2の急増)
- Linked Account別(子アカウントの異常)
- Linked Account × Serviceの組み合わせ
Slack通知との連携や、Athenaによる異常ログの分析にも対応可能です。
3. タグベースのコスト集計とFinOps戦略
コスト配分タグの活用
AWSでは、リソースにタグを付与し、それに基づいてコストを分類できます。
例:タグキー設計
Project:プロジェクト名Environment:prod / dev / stagingOwner:担当者メールアドレス
有効化手順(Billing Console)
- [Billing] → [Cost Allocation Tags]
- タグキーを選択し「Activate」
- Cost Explorerでグループ化して分析
FinOpsの視点
FinOpsとは「Finance(財務)」と「DevOps」を組み合わせた言葉で、開発と運用、経営の3者が協調してコスト最適化を実現する取り組みです。
FinOps実践の第一歩:
- 全リソースに共通タグを義務化(Tag Policy)
- タグ付きのCost Explorerレポートを月次で共有
- プロジェクト別のコスト責任を明確化
4. AWS Budgets連携とSlack通知
AWS Budgetsの概要
Budgetsは、特定の条件(サービス、アカウント、タグ単位)でコストや使用量のしきい値を設定し、超過時にアラートを出すことができます。
アラート設定例:
- タグが
Project=AIのコストが月5万円超えたら通知 - 全体で予算の80%を超えた時点でチームにSlack通知
Slack通知連携の構成
- Budgetsアラート → SNSトピック発行
- SNS → Lambda起動
- Lambda → Slack Webhookに通知送信
# LambdaからSlack通知(Node.js例) const https = require("https"); exports.handler = async (event) => { const message = JSON.stringify({ text: `AWS Budget Alert: ${JSON.stringify(event.Records[0].Sns.Message)}` }); const options = { hostname: "hooks.slack.com", path: "/services/XXXXX/YYYYY/ZZZZZ", method: "POST", headers: { "Content-Type": "application/json", "Content-Length": message.length } }; const req = https.request(options); req.write(message); req.end(); };
この構成により、予算を超える前にチーム内にリアルタイム通知でき、無駄なコスト発生を抑止できます。
まとめ
AWSにおけるコスト管理とガバナンスは、単なる監視ではなく文化・体制・仕組みとして組織全体に根付かせることが重要です。
- Organizationsでアカウント・ポリシー統制を行う
- 請求アラートと異常検知で予期せぬコストを早期発見
- タグ管理とFinOpsで責任分担と透明性を明確化
- BudgetsとSlack通知でアラートをリアルタイム化