mcpField
A
aws-cost-finops

aws-cost-finops

github.com/ahmedasmarクラウド・DevOps204105 回インストール29 週間前に更新
リポジトリ

aws-cost-finops について

aws-cost-finopsは、AWSのエンジニアリングチームやFinOpsチーム向けのコスト最適化スキルです。リソースと支出の分析に加え、診断スクリプト、ガバナンスガイド、レポートテンプレートを備えています。

主な機能

  1. 01未使用リソースとコスト異常の特定
  2. 02インスタンスの適正サイズ分析
  3. 03RI、Savings Plans、Spotの評価
  4. 04コストガバナンスと月次レビューの手順
  5. 05AWS診断スクリプトとレポートテンプレート

活用シーン

  1. 01予期しないAWS請求や支出急増の調査
  2. 02月次コスト最適化レビューの実施
  3. 03安定したワークロードの割引契約の検討
  4. 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.json
assets/templates/
monthly_cost_report.md
references/
best_practices.md
finops_governance.md
service_alternatives.md
scripts/
analyze_ri_recommendations.py
cost_anomaly_detector.py
detect_old_generations.py
find_unused_resources.py
rightsizing_analyzer.py
spot_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):

  1. インスタンスを停止する
  2. インスタンスタイプを変更する
  3. インスタンスを起動する
  4. アプリケーションを検証する

Graviton への移行の場合:

  1. ARM64 AMI または Docker イメージを作成する
  2. 新しい Graviton インスタンスを起動する
  3. 十分にテストする
  4. トラフィックを切り替える
  5. 古いインスタンスを終了する

ステップ 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 の文化とプラクティスを定着させる

コストに関する問題のトラブルシューティング

「請求額が突然増加しました」
  1. コスト異常検出を実行します:

    python3 scripts/cost_anomaly_detector.py --days 30
    
  2. Cost Explorer でサービスごとの内訳を確認します

  3. CloudTrail でリソース作成イベントを確認します

  4. AutoScaling イベントを確認します

  5. Reserved Instances の有効期限が切れていないか確認します

「コストを X% 削減する必要があります」

次の最適化ワークフローに従います:

  1. すべての検出スクリプトを実行します
  2. 削減可能なコストの合計を算出します
  3. 次の基準で優先順位を付けます:削減額 ×(1 / 作業量)
  4. まず、すぐに実施できる施策に取り組みます
  5. 長期的な効果が見込める戦略的な変更を実施します
「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 インスタンス(放棄されたものであることを確認後)

削除する前に、必ずリソースの所有者に確認してください!


ベストプラクティスのまとめ

  1. すべてにタグを付ける:一貫したタグ付けにより、コスト配分と説明責任を実現できます
  2. 継続的に監視する:スクリプトを毎週実行すると、無駄を早期に発見できます
  3. 毎月レビューする:定期的なレビューにより、コストのずれを防げます
  4. 先を見越して適正化する:コストの問題が発生するまで待たずに最適化します
  5. コミットメントを賢く活用する:RI/SP は安定したワークロードにのみ適用します
  6. 移行前にテストする:特に Graviton や Spot への移行時は重要です
  7. クリーンアップを自動化する:開発/テスト用リソースをスケジュールに従って停止します
  8. 成果を共有する:コスト削減を称えることで、FinOps の文化を育みます

その他のリソース

詳細な参考資料:

  • references/best_practices.md:包括的な最適化戦略
  • references/service_alternatives.md:費用対効果の高いサービス選定
  • references/finops_governance.md:組織における FinOps のプラクティス

テンプレート:

  • assets/templates/monthly_cost_report.md:月次レポートのテンプレート

スクリプト:

  • scripts/ ディレクトリ内のすべてのスクリプトで、使用方法を確認するには --help を指定します

AWS のドキュメント:

コメント