aws-cost-finops について
aws-cost-finopsは、AWSのエンジニアリングチームやFinOpsチーム向けのコスト最適化スキルです。リソースと支出の分析に加え、診断スクリプト、ガバナンスガイド、レポートテンプレートを備えています。
主な機能
- 01未使用リソースとコスト異常の特定
- 02インスタンスの適正サイズ分析
- 03RI、Savings Plans、Spotの評価
- 04コストガバナンスと月次レビューの手順
- 05AWS診断スクリプトとレポートテンプレート
活用シーン
- 01予期しないAWS請求や支出急増の調査
- 02月次コスト最適化レビューの実施
- 03安定したワークロードの割引契約の検討
- 04予算、タグ付け、コストガバナンスの策定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ahmedasmar/ devops-claude-skills --skill aws-cost-finopsインストール後、Claude Code で/aws-cost-finopsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.claude-plugin/plugin.jsonassets/templates/monthly_cost_report.mdreferences/best_practices.mdfinops_governance.mdservice_alternatives.mdscripts/analyze_ri_recommendations.pycost_anomaly_detector.pydetect_old_generations.pyfind_unused_resources.pyrightsizing_analyzer.pyspot_recommendations.py詳細
AWS コスト最適化と FinOps
AWS のコスト最適化と財務運用管理のための体系的なワークフローです。
このスキルを使用する場面
次のような場合に、このスキルを使用します。
- コスト削減を見つける:未使用のリソース、適正サイジングの機会、またはコミットメント割引を特定する
- 支出を分析する:コストの傾向を把握し、異常を検出し、またはコストの内訳を確認する
- アーキテクチャを最適化する:コスト効率の高いサービス、ストレージ階層、またはインスタンスタイプを選択する
- FinOps を導入する:ガバナンス、タグ付け、予算、または月次レビューを設定する
- 購入を決定する:リザーブドインスタンス、Savings Plans、または Spot インスタンスを評価する
- コストのトラブルシューティングを行う:予想外の請求額やコスト急増を調査する
- 予算を計画する:コストを予測し、新しいプロジェクトの影響を評価する
コスト最適化ワークフロー
AWS のコストを最適化するには、次の体系的なアプローチに従います。
┌─────────────────────────────────────────────┐
│ 1. DISCOVER │
│ What are we spending money on? │
│ Run: find_unused_resources.py │
│ Run: cost_anomaly_detector.py │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 2. ANALYZE │
│ Where are the optimization opportunities?│
│ Run: rightsizing_analyzer.py │
│ Run: detect_old_generations.py │
│ Run: spot_recommendations.py │
│ Run: analyze_ri_recommendations.py │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 3. PRIORITIZE │
│ What should we optimize first? │
│ - Quick wins (low risk, high savings) │
│ - Low-hanging fruit (easy to implement) │
│ - Strategic improvements │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 4. IMPLEMENT │
│ Execute optimization actions │
│ - Delete unused resources │
│ - Rightsize instances │
│ - Purchase commitments │
│ - Migrate to new generations │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 5. MONITOR │
│ Verify savings and track metrics │
│ - Monthly cost reviews │
│ - Tag compliance monitoring │
│ - Budget variance tracking │
└─────────────────────────────────────────────┘
主なワークフロー
ワークフロー 1:月次コスト最適化レビュー
頻度:毎月実施します(月の第 1 週)
ステップ 1:未使用のリソースを見つける
# Scan for waste across all resources
python3 scripts/find_unused_resources.py
# Expected output:
# - Unattached EBS volumes
# - Old snapshots
# - Unused Elastic IPs
# - Idle NAT Gateways
# - Idle EC2 instances
# - Unused load balancers
# - Estimated monthly savings
ステップ 2:コスト異常を分析する
# Detect unusual spending patterns
python3 scripts/cost_anomaly_detector.py --days 30
# Expected output:
# - Cost spikes and anomalies
# - Top cost drivers
# - Period-over-period comparison
# - 30-day forecast
ステップ 3:適正サイジングの機会を特定する
# Find oversized instances
python3 scripts/rightsizing_analyzer.py --days 30
# Expected output:
# - EC2 instances with low utilization
# - RDS instances with low utilization
# - Recommended smaller instance types
# - Estimated savings
ステップ 4:月次レポートを作成する
# Use the template to compile findings
cp assets/templates/monthly_cost_report.md reports/$(date +%Y-%m)-cost-report.md
# Fill in:
# - Findings from scripts
# - Action items
# - Team cost breakdowns
# - Optimization wins
ステップ 5:チームレビュー会議
- エンジニアリングチームに調査結果を提示する
- 最適化タスクを割り当てる
- アクション項目が完了するまで進捗を追跡する
ワークフロー 2:コミットメント購入の分析(RI/Savings Plans)
実施時期:四半期ごと、または使用パターンが安定したとき
ステップ 1:現在の使用状況を分析する
# Identify workloads suitable for commitments
python3 scripts/analyze_ri_recommendations.py --days 60
# Looks for:
# - EC2 instances running consistently for 60+ days
# - RDS instances with stable usage
# - Calculates ROI for 1yr vs 3yr commitments
ステップ 2:推奨事項を確認する
各推奨事項を評価します。
✅ Good candidate if:
- Running 24/7 for 60+ days
- Workload is stable and predictable
- No plans to change architecture
- Savings > 30%
❌ Poor candidate if:
- Workload is variable or experimental
- Architecture changes planned
- Instance type may change
- Dev/test environment
ステップ 3:コミットメントの種類を選択する
リザーブドインスタンス:
- Standard RI:最大の割引(63%)、柔軟性なし
- Convertible RI:中程度の割引(54%)、インスタンスタイプを変更可能
- 最適な用途:特定のインスタンスタイプ、安定したワークロード
Savings Plans:
- Compute SP:インスタンスタイプとリージョンをまたいで柔軟に適用可能(66%の節約)
- EC2 Instance SP:同じファミリー内のサイズをまたいで柔軟に適用可能(72%の節約)
- 最適な用途:制約の範囲内で変動するワークロード
意思決定マトリックス:
Known instance type, won't change → Standard RI
May need to change types → Convertible RI or Compute SP
Variable workloads → Compute Savings Plan
Maximum flexibility → Compute Savings Plan
ステップ 4:購入して追跡する
- AWS コンソールまたは CLI から購入する
- 購入日と所有者をコミットメントにタグ付けする
- 月次で使用率を監視する
- 90%を超える使用率を目指す
参考:コミットメント戦略の詳細については、references/best_practices.md を参照してください
ワークフロー 3:インスタンス世代の移行
実施時期:アーキテクチャレビューまたは最適化スプリント中
ステップ 1:古いインスタンスを検出する
# Find outdated instance generations
python3 scripts/detect_old_generations.py
# Identifies:
# - t2 → t3 migrations (10% savings)
# - m4 → m5 → m6i migrations
# - Intel → Graviton opportunities (20% savings)
ステップ 2:移行の優先順位を決める
すぐに効果が得られる施策(低リスク):
t2 → t3: Drop-in replacement, 10% savings
m4 → m5: Better performance, 5% savings
gp2 → gp3: No downtime, 20% savings
中程度の作業(テストが必要):
x86 → Graviton (ARM64): 20% savings
- Requires ARM64 compatibility testing
- Most modern frameworks support ARM64
- Test in staging first
ステップ 3:移行を実施する
EC2 の場合(x86 から x86):
- インスタンスを停止する
- インスタンスタイプを変更する
- インスタンスを起動する
- アプリケーションを検証する
Graviton への移行の場合:
- ARM64 AMI または Docker イメージを作成する
- 新しい Graviton インスタンスを起動する
- 十分にテストする
- トラフィックを切り替える
- 古いインスタンスを終了する
ステップ 4:節約額を検証する
- Cost Explorer で新しいコストを監視する
- パフォーマンスが許容範囲内であることを確認する
- 他のチーム向けに移行内容を記録する
参考:references/best_practices.md → コンピューティングの最適化を参照してください
ワークフロー 4:Spot インスタンスの評価
実施時期:耐障害性のあるワークロード、または Auto Scaling グループの場合
ステップ 1:候補を特定する
# Analyze workloads for Spot suitability
python3 scripts/spot_recommendations.py
# Evaluates:
# - Instances in Auto Scaling Groups (good candidates)
# - Dev/test/staging environments
# - Batch processing workloads
# - CI/CD and build servers
ステップ 2:適合性を評価する
Spot に最適:
- ステートレスアプリケーション
- バッチジョブ
- CI/CD パイプライン
- データ処理
- Auto Scaling グループ
Spot に適さない:
- データベース(レプリカなしの場合)
- ステートフルアプリケーション
- リアルタイムサービス
- ミッションクリティカルなワークロード
ステップ 3:実装戦略
オプション 1:Fargate Spot(最も簡単)
# ECS task definition
requiresCompatibilities:
- FARGATE
capacityProviderStrategy:
- capacityProvider: FARGATE_SPOT
weight: 70 # 70% Spot
- capacityProvider: FARGATE
weight: 30 # 30% On-Demand
オプション 2:Spot を使用した EC2 Auto Scaling
# Mixed instances policy
MixedInstancesPolicy:
InstancesDistribution:
OnDemandBaseCapacity: 2
OnDemandPercentageAboveBaseCapacity: 30
SpotAllocationStrategy: capacity-optimized
LaunchTemplate:
Overrides:
- InstanceType: m5.large
- InstanceType: m5a.large
- InstanceType: m5n.large
オプション 3:EC2 Spot Fleet
# Create Spot Fleet with diverse instance types
aws ec2 request-spot-fleet --spot-fleet-request-config file://spot-fleet.json
ステップ 4:中断への対処を実装する
# Handle 2-minute termination notice
# Instance metadata: /latest/meta-data/spot/instance-action
# In application:
1. Poll for termination notice
2. Gracefully shutdown (save state)
3. Drain connections
4. Exit
参考:references/best_practices.md → コンピューティングの最適化 → Spot インスタンスを参照してください
クイックリファレンス:コスト最適化スクリプト
すべてのスクリプトの場所
ls scripts/
# find_unused_resources.py
# analyze_ri_recommendations.py
# detect_old_generations.py
# spot_recommendations.py
# rightsizing_analyzer.py
# cost_anomaly_detector.py
スクリプトの使用パターン
月次レビュー(すべて実行):
python3 scripts/find_unused_resources.py
python3 scripts/cost_anomaly_detector.py --days 30
python3 scripts/rightsizing_analyzer.py --days 30
四半期ごとの最適化:
python3 scripts/analyze_ri_recommendations.py --days 60
python3 scripts/detect_old_generations.py
python3 scripts/spot_recommendations.py
特定のリージョンのみ:
python3 scripts/find_unused_resources.py --region us-east-1
python3 scripts/rightsizing_analyzer.py --region us-west-2
名前付き AWS プロファイル:
python3 scripts/find_unused_resources.py --profile production
python3 scripts/cost_anomaly_detector.py --profile production --days 60
スクリプトの要件
# Install dependencies
pip install boto3 tabulate
# AWS credentials required
# Configure via: aws configure
# Or use: --profile PROFILE_NAME
サービス別の最適化
コンピューティングの最適化
主なアクション:
- Graviton に移行する(20%のコスト削減)
- フォールトトレラントなワークロードに Spot を使用する(70%のコスト削減)
- 安定したワークロード向けに RI を購入する(40~65%のコスト削減)
- 過剰なサイズのインスタンスを適正化する
参考資料:references/best_practices.md → コンピューティングの最適化
ストレージの最適化
主なアクション:
- gp2 から gp3 に変換する(20%のコスト削減)
- S3 ライフサイクルポリシーを実装する(50~95%のコスト削減)
- 古いスナップショットを削除する
- S3 Intelligent-Tiering を使用する
参考資料:references/best_practices.md → ストレージの最適化
ネットワークの最適化
主なアクション:
- NAT Gateway を VPC Endpoint に置き換える(1 つあたり月額 25~30 ドルを節約)
- CloudFront を使用してデータ転送コストを削減する
- 可能な場合は、同じ AZ 内にリソースを配置する
参考資料:references/best_practices.md → ネットワークの最適化
データベースの最適化
主なアクション:
- RDS インスタンスのサイズを適正化する
- gp3 ストレージを使用する(gp2 より 20%低コスト)
- 変動するワークロードには Aurora Serverless を検討する
- RDS Reserved Instances を購入する
参考資料:references/best_practices.md → データベースの最適化
サービスの代替案に関する選択ガイド
サービスの選択でお困りですか?
質問:「EC2、Lambda、Fargate のどれを使うべきですか?」
回答:references/service_alternatives.md → コンピューティングの代替案を参照してください
質問:「どの S3 ストレージクラスを使うべきですか?」
回答:references/service_alternatives.md → ストレージの代替案を参照してください
質問:「RDS と Aurora のどちらを使うべきですか?」
回答:references/service_alternatives.md → データベースの代替案を参照してください
質問:「NAT Gateway、VPC Endpoint、NAT Instance のどれを使うべきですか?」
回答:references/service_alternatives.md → ネットワークの代替案を参照してください
FinOps のガバナンスとプロセス
FinOps の導入
フェーズ 1:基盤(1 か月目)
- Cost Explorer を有効にする
- AWS Budgets を設定する
- タグ付け戦略を定義する
- コスト配分タグを有効にする
フェーズ 2:可視化(2~3 か月目)
- タグ付けの適用を実装する
- 最適化スクリプトを実行する
- 月次レビューを設定する
- チーム別のコストレポートを作成する
フェーズ 3:文化の醸成(継続)
- エンジニアリング KPI にコスト指標を組み込む
- アーキテクチャの意思決定でコストをレビューする
- 定期的な最適化スプリントを実施する
- 各チームに FinOps 推進担当者を置く
完全版ガイド:references/finops_governance.md を参照してください
月次レビューのプロセス
第 1 週:データ収集
- すべての最適化スクリプトを実行する
- Cost & Usage Reports をエクスポートする
- 調査結果をまとめる
第 2 週:分析
- 傾向を特定する
- 改善の機会を見つける
- アクションの優先順位を決める
第 3 週:チームレビュー
- エンジニアリングチームに説明する
- 最適化について話し合う
- 対応項目を割り当てる
第 4 週:経営層への報告
- エグゼクティブサマリーを作成する
- 次の四半期を予測する
- 最適化の成果を報告する
テンプレート:assets/templates/monthly_cost_report.md を参照してください
詳細なプロセス:references/finops_governance.md → 月次レビューのプロセスを参照してください
コスト最適化チェックリスト
すぐにできること(最初に実施)
- アタッチされていない EBS ボリュームを削除する
- 古い EBS スナップショット(90 日超)を削除する
- 未使用の Elastic IP を解放する
- gp2 ボリュームを gp3 に変換する
- アイドル状態の EC2 インスタンスを停止/終了する
- S3 Intelligent-Tiering を有効にする
- AWS Budgets とアラートを設定する
中程度の工数(今四半期に実施)
- 過剰なサイズのインスタンスを適正化する
- 新しい世代のインスタンスに移行する
- 安定したワークロード向けに Reserved Instances を購入する
- S3 ライフサイクルポリシーを実装する
- 該当する場合、NAT Gateway を VPC Endpoint に置き換える
- リソースの自動スケジューリング(開発/テスト)を有効にする
- タグ付け戦略と適用を実装する
戦略的な取り組み(進行中)
- Graviton インスタンスに移行する
- 耐障害性が求められるワークロードに Spot を導入する
- 月次コストレビューのプロセスを確立する
- チームごとのコスト配分を設定する
- チャージバック/ショーバックモデルを導入する
- FinOps の文化とプラクティスを定着させる
コストに関する問題のトラブルシューティング
「請求額が突然増加しました」
-
コスト異常検出を実行します:
python3 scripts/cost_anomaly_detector.py --days 30 -
Cost Explorer でサービスごとの内訳を確認します
-
CloudTrail でリソース作成イベントを確認します
-
AutoScaling イベントを確認します
-
Reserved Instances の有効期限が切れていないか確認します
「コストを X% 削減する必要があります」
次の最適化ワークフローに従います:
- すべての検出スクリプトを実行します
- 削減可能なコストの合計を算出します
- 次の基準で優先順位を付けます:削減額 ×(1 / 作業量)
- まず、すぐに実施できる施策に取り組みます
- 長期的な効果が見込める戦略的な変更を実施します
「Reserved Instances が有効かどうかは、どうすればわかりますか?」
RI 分析を実行します:
python3 scripts/analyze_ri_recommendations.py --days 60
次の点を確認します:
- 60 日以上継続して稼働しているインスタンス
- 変更の予定がないワークロード
- 30% を超える削減効果
「安全に削除できるリソースはどれですか?」
未使用リソースの検出ツールを実行します:
python3 scripts/find_unused_resources.py
通常、安全に削除できるもの:
- アタッチされていない EBS ボリューム(確認後)
- 90 日を超えるスナップショット(別の場所にバックアップがある場合)
- 未使用の Elastic IP(DNS で使用されていないことを確認後)
- 30 日を超えて停止している EC2 インスタンス(放棄されたものであることを確認後)
削除する前に、必ずリソースの所有者に確認してください!
ベストプラクティスのまとめ
- すべてにタグを付ける:一貫したタグ付けにより、コスト配分と説明責任を実現できます
- 継続的に監視する:スクリプトを毎週実行すると、無駄を早期に発見できます
- 毎月レビューする:定期的なレビューにより、コストのずれを防げます
- 先を見越して適正化する:コストの問題が発生するまで待たずに最適化します
- コミットメントを賢く活用する:RI/SP は安定したワークロードにのみ適用します
- 移行前にテストする:特に Graviton や Spot への移行時は重要です
- クリーンアップを自動化する:開発/テスト用リソースをスケジュールに従って停止します
- 成果を共有する:コスト削減を称えることで、FinOps の文化を育みます
その他のリソース
詳細な参考資料:
references/best_practices.md:包括的な最適化戦略references/service_alternatives.md:費用対効果の高いサービス選定references/finops_governance.md:組織における FinOps のプラクティス
テンプレート:
assets/templates/monthly_cost_report.md:月次レポートのテンプレート
スクリプト:
scripts/ディレクトリ内のすべてのスクリプトで、使用方法を確認するには--helpを指定します
AWS のドキュメント:
- AWS Cost Explorer:https://aws.amazon.com/aws-cost-management/aws-cost-explorer/
- AWS Budgets:https://aws.amazon.com/aws-cost-management/aws-budgets/
- FinOps Foundation:https://www.finops.org