mcpField
A
aws-cost-optimizer

aws-cost-optimizer

github.com/sickn33クラウド・DevOps48.7k129 回インストール今日更新
リポジトリ

aws-cost-optimizer について

AWS 利用者向けのコスト分析・最適化スキルで、支出傾向を調べ、アイドル状態または利用率の低いリソースを特定します。節約策と AWS CLI の例を示し、変更前にリソースの所有者と安全性を確認するよう促します。

主な機能

  1. 01サービス、リージョン、タグ別のコスト分析
  2. 02支出傾向と異常の検出
  3. 03アイドルまたは低利用率リソースの特定
  4. 04コミットメントと適正サイズの提案
  5. 05具体的な施策による節約額の推定

活用シーン

  1. 01月ごとの AWS 支出比較
  2. 02未接続 EBS ボリュームやアイドル EC2 の特定
  3. 03RDS と EC2 の適正サイズ評価
  4. 04予算アラートとコストレポートの作成

インストール

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

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill aws-cost-optimizer

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

詳細

AWS コスト最適化

AWS の支出パターンを分析し、無駄を特定して、実行可能なコスト削減策を提示します。

このスキルを使うタイミング

AWS の支出を分析したり、コスト最適化の機会を特定したり、クラウドの無駄を削減したりする必要がある場合に、このスキルを使用します。

主な機能

コスト分析

  • AWS Cost Explorer のデータを解析し、傾向や異常を特定します
  • サービス、リージョン、リソースタグごとにコストを分類します
  • 前月比での支出増加を特定します

リソースの最適化

  • アイドル状態の EC2 インスタンス(CPU 使用率が低いもの)を検出します
  • 未アタッチの EBS ボリュームや古いスナップショットを見つけます
  • 未使用の Elastic IP を特定します
  • 使用率の低い RDS インスタンスを特定します
  • ライフサイクルポリシーの対象となる古い S3 オブジェクトを見つけます

削減の提案

  • リザーブドインスタンス/Savings Plans の利用機会を提案します
  • CloudWatch メトリクスに基づき、インスタンスタイプの適正化を推奨します
  • コストの高いリージョンにあるリソースを特定します
  • 具体的なアクションによる削減可能額を算出します

分析と変更の境界

AWS アカウント/プロファイル、リージョン、レポート対象期間を確認してください。例では macOS の BSD date ではなく、GNU date(-d)を使用します。Cost Explorer の終了日は期間に含まれず、使用状況データの反映には遅延が生じる場合があります。CPU 使用率が低いことや未アタッチ状態であることだけでは、安全に削除できるとは判断できません。所有者、復旧用の保持期間、I/O/ネットワーク/メモリ、ビジネスサイクルを確認してください。削除、終了、インスタンスタイプの適正化、コミットメントの購入には、明示的に承認された範囲と復旧計画が必要です。

AWS CLI コマンド

コストと使用状況の取得
# Last 30 days cost by service
aws ce get-cost-and-usage \
  --time-period Start=$(date -d '30 days ago' +%Y-%m-%d),End=$(date +%Y-%m-%d) \
  --granularity MONTHLY \
  --metrics BlendedCost \
  --group-by Type=DIMENSION,Key=SERVICE

# Daily costs for current month
aws ce get-cost-and-usage \
  --time-period Start=$(date +%Y-%m-01),End=$(date +%Y-%m-%d) \
  --granularity DAILY \
  --metrics UnblendedCost
未使用リソースの検索
# Unattached EBS volumes
aws ec2 describe-volumes \
  --filters Name=status,Values=available \
  --query 'Volumes[*].[VolumeId,Size,VolumeType,CreateTime]' \
  --output table

# Unused Elastic IPs
aws ec2 describe-addresses \
  --query 'Addresses[?AssociationId==null].[PublicIp,AllocationId]' \
  --output table

# Idle EC2 instances (requires CloudWatch)
aws cloudwatch get-metric-statistics \
  --namespace AWS/EC2 \
  --metric-name CPUUtilization \
  --dimensions Name=InstanceId,Value=i-xxxxx \
  --start-time $(date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%S) \
  --end-time $(date -u +%Y-%m-%dT%H:%M:%S) \
  --period 86400 \
  --statistics Average

# Old EBS snapshots (>90 days)
aws ec2 describe-snapshots \
  --owner-ids self \
  --query 'Snapshots[?StartTime<=`'$(date -d '90 days ago' --iso-8601)'`].[SnapshotId,StartTime,VolumeSize]' \
  --output table
インスタンスタイプの適正化分析
# List EC2 instances with their types
aws ec2 describe-instances \
  --query 'Reservations[*].Instances[*].[InstanceId,InstanceType,State.Name,Tags[?Key==`Name`].Value|[0]]' \
  --output table

# Get RDS instance utilization
aws cloudwatch get-metric-statistics \
  --namespace AWS/RDS \
  --metric-name CPUUtilization \
  --dimensions Name=DBInstanceIdentifier,Value=mydb \
  --start-time $(date -u -d '30 days ago' +%Y-%m-%dT%H:%M:%S) \
  --end-time $(date -u +%Y-%m-%dT%H:%M:%S) \
  --period 86400 \
  --statistics Average Maximum

最適化ワークフロー

  1. ベースライン評価

    • 3~6 か月分のコストデータを取得します
    • 支出額上位 5 つのサービスを特定します
    • 増加率を算出します
  2. 所有者の確認が必要な削減候補

    • 未アタッチの EBS ボリュームを削除します
    • 未使用の Elastic IP を解放します
    • アイドル状態の EC2 インスタンスを停止/終了します
    • 古いスナップショットを削除します
  3. 戦略的な最適化

    • リザーブドインスタンスの適用範囲を分析します
    • インスタンスタイプとワークロードを見直します
    • S3 ライフサイクルポリシーを導入します
    • 重要度の低いワークロードでは Spot インスタンスを検討します
  4. 継続的なモニタリング

    • アラート付きの AWS Budgets を設定します
    • Cost Anomaly Detection を有効にします
    • コスト配分のためにリソースにタグを付けます
    • 毎月のコストレビュー会議を実施します

コスト最適化チェックリスト

  • AWS Cost Explorer を有効にする
  • コスト配分タグを設定する
  • アラート付きの AWS Budget を作成する
  • 未使用リソースを確認して削除する
  • リザーブドインスタンスの利用機会を分析する
  • S3 Intelligent-Tiering を導入する
  • データ転送コストを見直す
  • Lambda のメモリ割り当てを最適化する
  • CloudWatch Logs の保持ポリシーを使用する
  • マルチリージョン間のコスト差を検討する

プロンプトの例

分析

  • 「過去 3 か月の AWS コストをサービス別に表示してください」
  • 「最もコストの高いリソースを 10 個教えてください」
  • 「今月の支出を先月と比較してください」

最適化

  • 「未アタッチの EBS ボリュームをすべて見つけて、削減額を算出してください」
  • 「CPU 使用率が 5% 未満の EC2 インスタンスを特定してください」
  • 「使用状況に基づいてリザーブドインスタンスの購入を提案してください」
  • 「90 日を超えるスナップショットを削除した場合の削減額を算出してください」

実施

  • 「未アタッチのボリュームを削除するスクリプトを作成してください」
  • 「月額 1000 ドルの予算アラートを設定してください」
  • 「経営陣向けのコスト最適化レポートを作成してください」

ベストプラクティス

  • まず本番環境以外で必ずテストします
  • 削除する前に、リソースが本当に未使用であることを確認します
  • コスト最適化のアクションをすべて記録します
  • 最適化施策の ROI を算出します
  • 定期的な最適化タスクを自動化します
  • AWS Trusted Advisor の推奨事項を活用します
  • AWS Cost Anomaly Detection を有効にします

Kiro CLI との統合

このスキルは Kiro CLI の AWS 統合とシームレスに連携します。

# Use Kiro to analyze costs
kiro-cli chat "Use aws-cost-optimizer to analyze my spending"

# Generate optimization report
kiro-cli chat "Create a cost optimization plan using aws-cost-optimizer"

安全に関する注意事項

  • リスクレベル:低 - 読み取り専用の分析は安全です
  • 削除操作:中リスク - リソースを削除する前に必ず確認してください
  • 本番環境の変更:高リスク - まず開発環境/ステージング環境でインスタンスタイプの適正化をテストしてください
  • 削除を行う前にバックアップを保持します
  • 使用可能な場合は --dry-run フラグを使用します

追加リソース

制限事項

  • 上記で説明されている範囲にタスクが明確に一致する場合にのみ、このスキルを使用してください。
  • 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。

コメント