
ここ一年のCCoEとしてのAWSコスト最適化を振り返る #devio2025
2025/09/03に開催された DevelopersIO 2025 Osaka #devio2025 にて、 「 ここ一年のCCoEとしてのAWSコスト最適化を振り返る 」 というタイトルで登壇しました。
聴講いただいた皆様、ありがとうございました!
本ブログでセッションスライド、およびその内容を記載します。
セッションスライド
以降は上記スライドのテキストです。
注意事項
- あくまで1例 あり、道半ばです
- コスト "可視化" の話が多めです
画像引用: クラウド財務管理はコスト削減以上のメリットをもたらす | Amazon Web Services ブログ
前提や背景
前提1: AWS環境について
- AWS Organizations 環境
- AWSアカウント数: 40以上
- 複数の利用部門/システムが存在
前提2: CCoEと私のポジション
- CCoEの技術メンバー として活動
- 全AWSアカウントの統制(ベースライン)
- 各利用部門とのコミュニケーション
※CCoE(Cloud Center of Excellence): クラウド利用を標準化・統制する専門チーム
活動を本格化した背景
- 円安の影響
- 使用量の拡大
- …など
AWSコスト最適化、どう進めたか?
まず参考にしたもの: CFMフレームワーク
おすすめ書籍
やること一覧を良い感じに把握できます。
とはいえ
- やること、めっちゃ多いな… 🤔
- どこから始めよう… 🤔
引用: AWSコスト最適化ガイドブック - Amazon より、目次部分
とりあえず走り出してみた
- CFMフレームワークを参考にしつつ
- できるところから着手
1年走ってみて、こんな感じでした
▼ ステップ1, ステップ2
ステップ1-2: 可視化と最適化をとにかく繰り返し
▼ ステップ1, ステップ2 + ステップ3
- ステップ1-2: 可視化と最適化をとにかく繰り返し
- ステップ3: CFMを徐々に意識 ※まだまだ道半ば
ステップ1: とにかく可視化
40+アカウントの コストの全体像 を把握するところから開始
大方針: 情報を集約する
- マルチアカウント環境の課題
- 40+アカウントを個別に見回るのは限界がある
- 横断的な把握が困難
- AWS Organizations 管理アカウントの権限を活用して可能な限り集約
▼ 集約したい情報
- 必須: 実際のコスト/使用量
- 必須: リソースに関するメタデータ
- できれば: コストに関する推奨事項
▼ 実際に使ったもの
- 必須: 実際のコスト/使用量 → Cost Explorer
- 必須: リソースに関するメタデータ → AWS Config , Resource Explorer
- できれば: コストに関する推奨事項 → Compute Optimizer
(使わなかったものも後述)
AWS Cost Explorer
- AWSが提供するコスト可視化・分析の標準ツール
- Organizations管理アカウントからメンバーアカウントのコストを一元的に確認可能
▼ コスト可視化の(個人的) MUST項目
以下項目でフィルタ/グループ化ができること!
- AWSアカウントごと
- AWSサービスごと
- 使用タイプごと
- リソースごと
▼ 項目ごとに気付けることの例
項目 | 気付けることの例 |
---|---|
AWSアカウント | XXX-PRDアカウント でコストになっている |
AWSサービス | CloudWatch でコストになっている |
使用タイプ | ロググループ取り込み料金 でコストになっている |
リソース | hoge-app-log ロググループ でコストになっている → hoge担当メンバーに聞いてみよう |
AWS Config / Resource Explorer
目的: 対象リソースのメタデータ(タグ情報や関連リソース)を素早く把握
- AWS Config: リソースの設定情報と変更履歴を記録するサービス
- Resource Explorer: リソースを横断的に検索できるサービス(無料)
画像: AWS入門ブログリレー2024〜AWS Config編〜 | DevelopersIO
AWS Compute Optimizer
- パフォーマンスとコスト最適化のための推奨事項を生成するツール
- 基本的に無料 + Organizations連携で一元管理も可能
使用しなかったツールたち
- AWS CUR (Cost and Usage Reports)
- 列数・ボリュームが多く、Athenaでのクエリのハードルが高い
- 初期ではCost Explorerで十分だったので後回し
- コスト配分タグの整備
- 直接コスト削減に繋がらないので後回し
- Cost Optimization Hub
- これ自体が新規の推奨事項を生成するわけではないので後回し
ステップ2: とにかく最適化
大方針: 泥臭く進める
- 最適化 = 利用部門とのコミュニケーションが8割
- コミュニケーションをスムーズに進めるための材料(=可視化)はちゃんと準備しておく
- 泥臭く!
- 地道に1つ1つ積み重ねる
やったこと一覧
- CloudWatch ロググループ取り込み量の削減 (抜粋)
- CloudWatch GetMetricData 使用量の最適化
- 不要なEIP解放
- 不要なEBS/DBスナップショット削除
- EC2リサイズ
- S3ライフサイクルルール最適化
- VPCエンドポイント配置
- Config記録の最適化
- Security Hub コントロール最適化
CloudWatch ロググループ最適化
可視化で分かったこと:
- APN1-DataProcessing-Bytes がCloudWatchコストの 7割を占めていた
- そのうち 上位10リソースだけで全体の8割 を占めていた
※ APN1-DataProcessing-Bytes: 東京リージョンでのCloudWatch Logs ロググループ取り込み料金
▼ やったこと
- CCoE内部
- CCoE管理のCloudWatch Logsリソースを最適化
- 利用部門向け
- ログ保管のガイドライン作成
- 横断的にロググループ最適化を提案
↳ CCoE管理のCloudWatch Logsリソースを最適化
aws-controltower/CloudTrailLogs
ロググループ出力を オプトアウトしてコスト削減。
↳ ログ保管のガイドライン作成
簡易的なガイドラインを作成して利用部門に周知。
↳ 横断的にロググループ最適化を提案
実際にやっていただいたことの一例:
- 最適化
- ログ出力のレベルを WARN 以上に変更
- リクエストに含まれる「デカいヘッダ」をログ出力しない
- 停止
- 普段監視で使っていない RDS全般ログ(general)の出力を停止
- 長期保存/分析用途のみなので、S3出力のみに変更
ステップ3: CFMを意識した活動
※まだまだ道半ばなので言えることは少ない
ステップ1-2 のサイクルを回しながら CFMを徐々に意識
おすすめ書籍(再掲)
やること一覧を良い感じに把握できます。
抜粋: より進んだ可視化
CUR(Cost and Usage Reports) 活用
一番のモチベーションは 「RI/SP適用状況の把握 + 購入計画の効率化」 。 他のAWS機能では制約が多かった。
- Cost Explorer : リソースレベル分析は 過去14日分まで
- RI/SP推奨事項: 最大 過去60日 まで
- RI/SPカバレッジ・使用状況レポート: リソースレベルで見れない
↳ CUR導入後にやったこと
- RDS RI適用状況のリソースレベル把握
- SP適用状況(EC2/Fargate)把握するためのQuickSightダッシュボード作成
- Cloud Intelligence Dashboard (AWS Solution) の展開
↳ Cloud Intelligence Dashboard (CID)
詳しくは以下ご覧ください。
コスト配分タグ付与
- 目的: プロジェクトが混在したAWSアカウントのコスト可視化
- 泥臭くタグ付けして、カバレッジを向上
- → コストの9割をプロジェクト別に可視化できるように
おわりにむけて
特に伝えたかったところを再掲
可視化で大事だと思ったこと
- 情報を集約 する
- 以下コスト項目をサクッと見られるようにする
- AWSアカウントごと
- AWSサービスごと
- 使用タイプごと
- リソースごと
最適化で大事だと思ったこと
- 泥臭く 、着実に進める
- 最適化は利用部門とのコミュニケーションが8割
おわり
- 1年ほどコスト最適化に注力しました
- 利用部門の積極的な協力と、チームメンバーの推進があって成り立っています
- 特に同僚K.Yさんには着実にコスト可視化/最適化を進めていただきました (ありがとうございます!)