aws-cost-optimize について
クラウドリソースと IaC を調べる AWS コスト最適化ワークフローです。リソース、利用状況、コストのデータから改善案を作成し、承認後に個別の GitHub Issue と統括 EPIC を登録します。
主な機能
- 01リージョンごとの AWS リソース検出
- 02IaC 設定ファイルの確認
- 03CloudWatch の利用状況とコストの収集
- 04削減案のスコアリングと優先順位付け
- 05承認後の GitHub Issue 作成
活用シーン
- 01AWS インフラのコスト削減機会の確認
- 02実際の利用状況に基づくリソース設定の評価
- 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 を使用します
プロセス:
- ベストプラクティスを読み込む:
https://docs.aws.amazon.com/cost-management/latest/userguide/cost-optimization-best-practices.htmlを取得します- AWS Well-Architected のコスト最適化の柱の概要を取得します
- 以降の分析と推奨事項の作成には、これらのプラクティスを活用します
ステップ 2:AWS インフラストラクチャを検出する
アクション:AWS リソースと設定を動的に検出して分析します
ツール:AWS CLI とローカルファイルシステムへのアクセス
プロセス:
-
アカウントとリージョンの検出:
aws sts get-caller-identityを実行してアカウントを確認しますaws configure get regionを実行してデフォルトのリージョンを特定します
-
リソースの検出(リージョンごと):
- 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
- EC2 インスタンス:
-
IaC の検出:
- IaC ファイルを検索します:
**/*.tf、**/*.yaml(CloudFormation/SAM)、**/*.json(CloudFormation)、**/cdk.json、lib/**/*.ts(CDK) - リソース定義を解析し、意図された設定を把握します
- アプリケーションコードのファイルは使用せず、信頼できる情報源として IaC ファイルのみを使用してください
- IaC ファイルが見つからない場合:停止してユーザーに報告します
- IaC ファイルを検索します:
ステップ 3:使用状況のメトリクスを収集し、現在のコストを検証する
アクション:使用率データを収集し、実際のリソースコストを確認します
ツール:AWS CLI(CloudWatch、Cost Explorer)
プロセス:
-
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 -
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 -
ベースラインのメトリクスを算出する:CPU/メモリの平均、Lambda の呼び出し頻度、データ転送のパターン、および現実的な現在の月間合計額を算出します。
ステップ 4:コスト最適化の推奨事項を生成する
アクション:リソースを分析して最適化の機会を特定します プロセス:
-
最適化パターンを適用する:
コンピューティング:
- 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エンドポイントを使用します。
-
優先度スコアを計算する:
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コマンドが含まれている
- ✅ 課題の作成前にユーザーの確認を得ている