mcpField
A
aws-cost-optimize

aws-cost-optimize

github.com/githubクラウド・DevOps40.5k69 回インストール1 日前に更新
リポジトリ

aws-cost-optimize について

クラウドリソースと IaC を調べる AWS コスト最適化ワークフローです。リソース、利用状況、コストのデータから改善案を作成し、承認後に個別の GitHub Issue と統括 EPIC を登録します。

主な機能

  1. 01リージョンごとの AWS リソース検出
  2. 02IaC 設定ファイルの確認
  3. 03CloudWatch の利用状況とコストの収集
  4. 04削減案のスコアリングと優先順位付け
  5. 05承認後の GitHub Issue 作成

活用シーン

  1. 01AWS インフラのコスト削減機会の確認
  2. 02実際の利用状況に基づくリソース設定の評価
  3. 03承認済みの最適化作業の GitHub での追跡

MCP 対応

このワークフローには、認証済みの GitHub MCP サーバーが必要です。ユーザーの承認後、個別の最適化 Issue と統括 EPIC の作成に利用します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/github/awesome-copilot --skill aws-cost-optimize

インストール後、Claude Code で/aws-cost-optimizeを入力して読み込まれたか確認します。

詳細

AWS コスト最適化

このワークフローでは、Infrastructure-as-Code(IaC)ファイルと AWS リソースを分析し、コスト最適化の推奨事項を生成します。最適化の機会ごとに個別の GitHub issue を作成し、実施の調整用に EPIC issue を 1 件作成することで、コスト削減施策を効率的に追跡して実行できるようにします。

前提条件

  • AWS CLI が設定済みで、認証されている(aws sts get-caller-identity が成功する)
  • GitHub MCP サーバーが設定済みで、認証されている
  • 対象の GitHub リポジトリが特定されている
  • AWS リソースがデプロイされている(IaC ファイルは任意ですが、あると便利です)

ワークフローの手順

ステップ 1:AWS コスト最適化のベストプラクティスを取得する

アクション:分析の前にコスト最適化のベストプラクティスを取得します
ツール:AWS ドキュメントの取得に fetch を使用します
プロセス:

  1. ベストプラクティスを読み込む:
    • https://docs.aws.amazon.com/cost-management/latest/userguide/cost-optimization-best-practices.html を取得します
    • AWS Well-Architected のコスト最適化の柱の概要を取得します
    • 以降の分析と推奨事項の作成には、これらのプラクティスを活用します
ステップ 2:AWS インフラストラクチャを検出する

アクション:AWS リソースと設定を動的に検出して分析します
ツール:AWS CLI とローカルファイルシステムへのアクセス
プロセス:

  1. アカウントとリージョンの検出:

    • aws sts get-caller-identity を実行してアカウントを確認します
    • aws configure get region を実行してデフォルトのリージョンを特定します
  2. リソースの検出(リージョンごと):

    • EC2 インスタンス:aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,InstanceType,State.Name,Tags]'
    • RDS インスタンス:aws rds describe-db-instances --query 'DBInstances[].[DBInstanceIdentifier,DBInstanceClass,Engine,MultiAZ]'
    • Lambda 関数:aws lambda list-functions --query 'Functions[].[FunctionName,Runtime,MemorySize,Architectures]'
    • ECS クラスター/サービス:aws ecs list-clusters を実行してから aws ecs describe-services を実行します
    • S3 バケット:aws s3api list-buckets --query 'Buckets[].Name'
    • ElastiCache クラスター:aws elasticache describe-cache-clusters
    • NAT ゲートウェイ:aws ec2 describe-nat-gateways
    • ロードバランサー:aws elbv2 describe-load-balancers
  3. IaC の検出:

    • IaC ファイルを検索します:**/*.tf、**/*.yaml(CloudFormation/SAM)、**/*.json(CloudFormation)、**/cdk.json、lib/**/*.ts(CDK)
    • リソース定義を解析し、意図された設定を把握します
    • アプリケーションコードのファイルは使用せず、信頼できる情報源として IaC ファイルのみを使用してください
    • IaC ファイルが見つからない場合:停止してユーザーに報告します
ステップ 3:使用状況のメトリクスを収集し、現在のコストを検証する

アクション:使用率データを収集し、実際のリソースコストを確認します
ツール:AWS CLI(CloudWatch、Cost Explorer)
プロセス:

  1. CloudWatch メトリクス(過去 7 日間):

    # EC2 CPU utilization
    aws cloudwatch get-metric-statistics \
      --namespace AWS/EC2 --metric-name CPUUtilization \
      --dimensions Name=InstanceId,Value=<id> \
      --start-time $(date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ) \
      --end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \
      --period 3600 --statistics Average
    
    # Lambda duration
    aws cloudwatch get-metric-statistics \
      --namespace AWS/Lambda --metric-name Duration \
      --dimensions Name=FunctionName,Value=<name> \
      --start-time $(date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ) \
      --end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \
      --period 86400 --statistics Average,Maximum
    
  2. AWS Cost Explorer:

    aws ce get-cost-and-usage \
      --time-period Start=$(date -u -d '30 days ago' +%Y-%m-%d),End=$(date -u +%Y-%m-%d) \
      --granularity MONTHLY --metrics BlendedCost \
      --group-by Type=DIMENSION,Key=SERVICE
    
  3. ベースラインのメトリクスを算出する:CPU/メモリの平均、Lambda の呼び出し頻度、データ転送のパターン、および現実的な現在の月間合計額を算出します。

ステップ 4:コスト最適化の推奨事項を生成する

アクション:リソースを分析して最適化の機会を特定します プロセス:

  1. 最適化パターンを適用する:

    コンピューティング:

    • EC2:CPU/メモリに基づいて適正サイズに調整します(平均使用率が20%未満の場合はダウンサイジング)。オンデマンドをSavings Plansに変更し、Graviton/ARMに移行します(最大40%のコスト削減)。
    • Lambda:アイドル状態の関数のメモリを削減し、arm64に切り替えます(20%のコスト削減)。
    • ECS/EKS:開発/バッチのワークロードにFargate Spotを使用します。

    データベース:

    • RDS:インスタンスクラスを適正サイズに調整し、開発環境ではシングルAZに変更し、負荷が変動する場合はAurora Serverless v2を使用します。
    • DynamoDB:トラフィックが予測できない場合は、プロビジョンドからオンデマンドに切り替えます。
    • ElastiCache:メモリ使用率に基づいてノードタイプを適正サイズに調整します。

    ストレージ:

    • S3:ライフサイクルポリシーを設定します(Standardから30日後にStandard-IA、90日後にGlacier)。Intelligent-Tieringを有効にします。
    • EBS:未アタッチのボリュームを削除し、gp2からgp3に変更します(パフォーマンスは同等で、コストを20%削減)。

    ネットワーク:

    • 非本番環境ではNAT Gatewayを統合します。
    • NAT Gatewayの料金を回避するため、S3/DynamoDBにはVPCエンドポイントを使用します。
  2. 優先度スコアを計算する:

    Priority Score = (Value Score × Monthly Savings) / (Risk Score × Implementation Days)
    High: Score > 20 | Medium: Score 5-20 | Low: Score < 5
    
ステップ 5:ユーザーの確認

アクション:概要を提示し、GitHubの課題を作成する前に承認を得ます。

🎯 AWS Cost Optimization Summary

📊 Analysis Results:
• Total Resources Analyzed: X
• Current Monthly Cost: $X
• Potential Monthly Savings: $Y
• Optimization Opportunities: Z
• High Priority Items: N

🏆 Recommendations:
1. [Resource]: [Current] → [Target] = $X/month savings - [Risk] | [Effort]
...

💡 This will create Y individual GitHub issues + 1 EPIC issue.

❓ Proceed with creating GitHub issues? (y/n)

続行する前に、ユーザーの確認を待ちます。

ステップ 6:最適化ごとの課題を作成する

アクション:最適化ごとに個別のGitHub課題を作成します。「cost-optimization」(緑)と「aws」(オレンジ)のラベルを付けます。

タイトル:[COST-OPT] [Resource Type] - [Brief Description] - $X/month savings

本文:

## 💰 Cost Optimization: [Brief Title]

**Monthly Savings**: $X | **Risk Level**: [Low/Medium/High] | **Effort**: X days

### 📋 Description
[Clear explanation of the optimization and why it's needed]

### 🔧 Implementation

**IaC Files Detected**: [Yes/No]

```bash
# IaC modification (preferred) or AWS CLI fallback
```

### 📊 Evidence
- Current Configuration: [details]
- Usage Pattern: [evidence from CloudWatch]
- Cost Impact: $X/month → $Y/month

### ✅ Validation Steps
- [ ] Test in non-production environment
- [ ] Verify no performance degradation via CloudWatch
- [ ] Confirm cost reduction in AWS Cost Explorer

### ⚠️ Risks & Considerations
- [Risk and mitigation]

**Priority Score**: X | **Value**: X/10 | **Risk**: X/10
ステップ 7:EPIC調整課題を作成する

アクション:マスター追跡課題を作成します。「cost-optimization」(緑)、「aws」(オレンジ)、「epic」(紫)のラベルを付けます。

タイトル:[EPIC] AWS Cost Optimization Initiative - $X/month potential savings

本文:アカウント/リージョンの詳細を含むエグゼクティブサマリー、現在のリソースを示すMermaidアーキテクチャ図、個別の課題すべてにリンクした優先度順のチェックリスト(高 → 中 → 低)、進捗状況、および成功基準(推定削減額の80%超を実現し、パフォーマンスが低下しないこと)。

エラー処理

  • AWS認証の失敗:aws configureの実行方法を案内します。
  • リソースが見つからない:AWSリソースのデプロイに関する情報提供用の課題を作成します。
  • 権限不足:必要な読み取り専用IAM権限を一覧表示します。
  • GitHubでの作成失敗:書式を整えた推奨事項をコンソールに出力します。
  • Cost Explorerが有効になっていない:AWS Consoleでの有効化方法を案内します。

成功基準

  • ✅ すべてのコスト見積もりが実際の構成とAWSの料金に照らして検証されている
  • ✅ 最適化ごとに個別のGitHub課題が作成されている
  • ✅ EPIC課題で包括的な調整と追跡が行われている
  • ✅ すべての推奨事項に具体的なAWS CLIまたはIaCコマンドが含まれている
  • ✅ 課題の作成前にユーザーの確認を得ている

コメント