目次

AWS Compute Optimizer 完全ガイド v2.0

ML 駆動リソース最適化・Generative Insights・Cost & Performance 削減


ドキュメントメタデータ

  • 最終更新: 2026-04-26
  • バージョン: v2.0
  • 対象者: クラウドアーキテクト、DevOps エンジニア、FinOps チーム、CTO
  • 難易度: 中級
  • 関連サービス: Cost Explorer、Trusted Advisor、AWS Systems Manager、CloudWatch、Organizations
  • 推奨: Organizations 全体での常時有効化・月次レビュー

概要と課題

本質

AWS Compute Optimizer「機械学習でリソース利用状況を分析し、EC2・Lambda・ECS・EBS・RDS・Aurora の最適なサイズを推奨する ML ベースリソースサイジングサービス」 である。CloudWatch メトリクス・カスタムメトリクス(Datadog・Dynatrace)を 14 日間(Enhanced Observability で 93 日間)分析し、過剰プロビジョニング・過少プロビジョニングを検出。具体的な推奨インスタンスタイプ・メモリサイズ・IOPS・ボリュームタイプ変更と月次コスト削減額を定量化する。基本機能は無料。

このサービスを選ぶ理由

なぜ AWS Compute Optimizer なのか?

  1. データドリブンなリソースサイジング

    • 経験則ではなく、実際の CPU・メモリ・ネットワーク使用率を 14 日間(93 日間)分析
    • 機械学習で「最適」「過剰」「過少」を自動判定
    • 月次コスト削減額を定量化(例: m5.xlarge → m5.large で $45/月削減)
  2. 複数リソースタイプの横断分析

    • EC2 インスタンス・Auto Scaling グループ・EBS ボリューム・Lambda・ECS・RDS・Aurora を一元管理
    • Cost Explorer のコスト可視化だけでは「何を変えるか」不明だが、Optimizer が具体的変更先を提示
  3. Graviton / Arm64 への移行推奨

    • AWS Graviton プロセッサ(Arm64)への自動移行提案
    • 同等パフォーマンスで 20~30% コスト削減が可能
  4. gp2 → gp3 ストレージ最適化

    • EBS gp2 ボリュームの gp3 移行推奨・自動スケジューリング
    • 平均 20% のコスト削減(同等パフォーマンス)
  5. Organizations 全体での集約管理

    • 全アカウント・全リージョンの推奨事項を一元収集
    • 組織全体での削減機会を可視化(年間数百万ドルのコスト削減機会)
  6. 基本機能が無料

    • 14 日分析:無料
    • Enhanced Observability(93 日分析):有料($0.0003288/vCPU/時間)
    • ROI が高い

このサービスを選ばない理由

  • リアルタイムスケーリング → Auto Scaling・Karpenter
  • 複雑な料金モデル分析 → AWS Trusted Advisor・Cloudability(サードパーティ)
  • カスタムメトリクスのみの最適化 → CloudWatch Application Insights

アーキテクチャと設計原則

全体構成図(Mermaid 1)

graph TB
    subgraph ResourceLayer["AWS リソース層"]
        EC2["EC2 Instances"]
        Lambda["Lambda Functions"]
        ECS["ECS Services"]
        EBS["EBS Volumes"]
        RDS["RDS Databases"]
        Aurora["Aurora Clusters"]
        ASG["Auto Scaling Groups"]
    end
    
    subgraph MetricsLayer["メトリクス収集層"]
        CloudWatch["CloudWatch Metrics"]
        Custom["Custom Metrics<br/>(Datadog/Dynatrace)"]
        Enhanced["Enhanced Infrastructure<br/>Metrics (Paid)"]
    end
    
    subgraph AnalysisLayer["ML 分析層"]
        DataCollect["14日(93日)分析"]
        MLModel["ML Model<br/>・CPU使用率分析<br/>・Memory推測<br/>・Network I/O<br/>・IOPS分析"]
        Recommendation["推奨生成"]
    end
    
    subgraph RecommendationLayer["推奨層"]
        Finding["Finding<br/>(最適・過剰・過少)"]
        Suggestion["Generative Insights<br/>(最適化提案)"]
        CostImpact["Cost Impact<br/>(削減額)"]
    end
    
    subgraph ConsumptionLayer["利用層"]
        Console["Console UI"]
        API["API"]
        Export["S3 Export"]
        Reports["Cost Reports"]
    end
    
    EC2 --> CloudWatch
    Lambda --> CloudWatch
    ECS --> CloudWatch
    EBS --> CloudWatch
    RDS --> CloudWatch
    Aurora --> CloudWatch
    ASG --> CloudWatch
    
    CloudWatch --> DataCollect
    Custom --> DataCollect
    Enhanced --> DataCollect
    
    DataCollect --> MLModel
    MLModel --> Recommendation
    Recommendation --> Finding
    Recommendation --> Suggestion
    Recommendation --> CostImpact
    
    Finding --> Console
    Suggestion --> Console
    CostImpact --> Console
    
    Console --> API
    Console --> Export
    Console --> Reports

推奨フロー(Mermaid 2)

sequenceDiagram
    participant User as ユーザー
    participant Optimizer as Compute Optimizer
    participant Metrics as CloudWatch/Custom
    participant ML as ML Model
    participant Console as Console
    
    User->>Optimizer: 有効化(Opt-in)
    Optimizer->>Metrics: メトリクス収集開始
    Note over Metrics: 14日(93日)データ蓄積
    Metrics->>ML: メトリクスデータ送信
    ML->>ML: リソース利用パターン学習
    ML->>Console: 推奨生成・表示
    Console->>User: Dashboard に推奨表示
    User->>User: 推奨を確認・実装判断

コアコンポーネント

1. リソース推奨対象

+ EC2 Instances
  → インスタンスタイプ・サイズ最適化
  → Graviton プロセッサ移行推奨
  
+ EC2 Auto Scaling Groups
  → グループ内のインスタンスタイプ最適化
  → スポット インスタンス混在推奨
  
+ EBS Volumes
  → gp2 → gp3 移行推奨
  → IOPS・スループット最適化
  
+ AWS Lambda
  → メモリサイズ最適化
  → CPU・同時実行数推奨
  
+ ECS Services (Fargate)
  → vCPU・メモリの最適サイズ推奨
  
+ Amazon RDS
  → DB インスタンスクラス最適化
  → 多読レプリカ設定推奨
  
+ Amazon Aurora
  → インスタンスクラス最適化
  → ライターレプリカ構成推奨

2. Finding(推奨ステータス)

OPTIMIZED(最適)
  → 現状のリソースが最適
  → 変更不要・コスト効率化の余地なし
  
OVER_PROVISIONED(過剰)
  → リソースが過剰に割り当てられている
  → コスト削減の余地あり(推奨)
  → 性能リスク(PerfRisk): 0.0~10(低リスク推奨)
  
UNDER_PROVISIONED(過少)
  → リソースが不足している可能性
  → パフォーマンス問題のリスク
  → 優先度: 高(即座に改善推奨)
  
NONE(データ不足)
  → メトリクス蓄積期間不足(< 14 日)
  → 推奨生成不可

3. Recommendation Options(複数推奨)

EC2 インスタンスの場合:
  1. インスタンスタイプ(例: m5.xlarge → m6g.large)
  2. 期待される月次削減額
  3. 性能リスク(PerfRisk): 0.0~10
  4. ネットワークパフォーマンス変化
  
例:
  Current:    m5.xlarge (4 vCPU, 16GB メモリ, $0.192/時間)
  Rec 1:      m6g.large  (2 vCPU, 8GB メモリ, $0.099/時間)
              Cost Saving: $66/月, PerfRisk: 0.02 (低い)
  
  Rec 2:      t3.large   (2 vCPU, 8GB メモリ, $0.083/時間)
              Cost Saving: $80/月, PerfRisk: 0.05 (低い)

4. メトリクス分析対象

EC2:
  - CPU 使用率(平均・ピーク)
  - メモリ使用率(推定値・CloudWatch Agent 経由)
  - ネットワーク I/O(in/out)
  - ディスク I/O(read/write)

Lambda:
  - 実行時間(duration)
  - メモリ使用量(max memory used)
  - 呼び出し数(invocations)
  - エラー率

RDS:
  - CPU 使用率
  - DB 接続数
  - I/O 操作
  - ストレージ使用量

ECS Fargate:
  - CPU 使用率
  - メモリ使用率
  - ネットワーク I/O

EBS:
  - IOPS 使用率
  - スループット使用率
  - ストレージ容量 使用率

5. Performance Risk(パフォーマンスリスク)

リスク評価: 0.0~10.0

0~2:    Very Low Risk(推奨・即座に実装可能)
2~4:    Low Risk(推奨・テスト後実装)
4~6:    Moderate Risk(慎重に検証)
6~8:    High Risk(段階的に実装)
8~10:   Very High Risk(実装前に詳細検証)

例:
  m5.xlarge → m6g.large: PerfRisk = 0.02(即座に実装可)
  m5.xlarge → t3.large:  PerfRisk = 0.05(即座に実装可)
  m5.xlarge → t2.large:  PerfRisk = 3.5 (テスト後に実装)

主要ユースケース

1. 新規プロジェクトのリソースサイジング

シナリオ: 新規 Web API をデプロイ・初期設定 m5.xlarge(過剰に設定)

Day 1-14: CloudWatch でメトリクス収集
  - 実測:CPU 平均 18%・ピーク 35%
  - 実測:メモリ 8GB / 16GB(50% 使用)

Day 14: Compute Optimizer が推奨を生成
  推奨: m5.large(2 vCPU, 8GB)
  Cost Saving: $45/月(52% 削減)
  PerfRisk: 0.01(最小)

実装後: 安定稼働確認・コスト削減確認

2. 年次コスト削減施策

シナリオ: 組織全体 1,000 台の EC2 インスタンス

Compute Optimizer で一括分析:
  OVER_PROVISIONED: 620 台
  OPTIMIZED: 280 台
  UNDER_PROVISIONED: 100 台

削減見積もり:
  620 × $45/月(平均) = $27,900/月削減
  年間: $334,800 削減

優先順位:
  1. UNDER_PROVISIONED(パフォーマンスリスク)
  2. OVER_PROVISIONED + PerfRisk < 2.0
  3. OVER_PROVISIONED + PerfRisk 2.0~4.0

3. gp2 → gp3 ストレージ移行

シナリオ: EBS gp2 ボリューム 500 個(各 100GB, 3000 IOPS)

月次コスト(gp2):
  500 vol × (100GB × $0.10 + 3000 IOPS × $0.07) = $11,500/月

Compute Optimizer 推奨:
  gp3 に移行・3000 IOPS → 2000 IOPS に最適化
  (実際の使用率が 2000 IOPS 程度)

月次コスト(gp3):
  500 vol × (100GB × $0.08 + 2000 IOPS × $0.06) = $7,000/月

削減額: $4,500/月(年間 $54,000)
互換性: ほぼ 100%・リスク最小

4. Lambda メモリ最適化

シナリオ: Lambda 関数 1,000 個・平均メモリ設定 3GB

実測分析:
  実使用メモリ: 平均 1.2GB
  実行時間: 平均 0.5 秒
  月間実行数: 1 億回

現在のコスト:
  1 億回 × 3GB × 0.0000166667 = $5,000/月

推奨: メモリを 3GB → 1.5GB に削減
  - 実行時間が 0.5 秒 → 0.55 秒に増加
  - 但しメモリ削減による削減額 > 実行時間増加による費用増加

新コスト:
  1 億回 × 1.5GB × 0.0000166667 = $2,500/月

削減額: $2,500/月(年間 $30,000)

5. Graviton への移行

シナリオ: x86-64 インスタンス m5.2xlarge → m6g.2xlarge への移行

m5.2xlarge の場合:
  vCPU: 8, Memory: 32GB
  cost: $0.384/時間

m6g.2xlarge(Graviton)の場合:
  vCPU: 8, Memory: 32GB
  cost: $0.274/時間

コスト削減: $0.110/時間 = 28.6% 削減
月次削減: $0.110 × 730 = $80.30/月

前提条件:
  - ARM64 互換のアプリケーション
  - コンテナ化されたワークロード

6. Auto Scaling Group の最適化

シナリオ: ASG に 10 台の t3.large インスタンス

Compute Optimizer が提案:
  → スポットインスタンス 60% + オンデマンド 40% で混在化
  → 期待削減額: $120/月

実装:
  OnDemand キャパシティ: 4 台(40%)
  Spot キャパシティ: 6 台(60%)

結果:
  スポット価格: $0.045/時間(t3.large)
  オンデマンド: $0.0832/時間

月次コスト削減: $0.045 × 4 × 730 + 0.0832 × 6 × 730 = 削減

7. RDS インスタンスクラス最適化

シナリオ: RDS db.r5.2xlarge(メモリ最適・8 vCPU・64GB)
         実使用メモリ: 平均 32GB・ピーク 48GB

Compute Optimizer が提案:
  → db.r6g.xlarge(Graviton・4 vCPU・32GB)に変更
  
Cost Impact:
  db.r5.2xlarge: $3.50/時間
  db.r6g.xlarge: $1.62/時間
  
削減額: $1.88/時間 = $1,370/月

8. ECS Fargate タスク最適化

シナリオ: ECS Fargate タスク・vCPU: 4・メモリ: 8GB
         100 個のタスク実行・24 時間稼働

実測分析:
  実使用 vCPU: 1.5(最大値)
  実使用メモリ: 4GB(最大値)

推奨:
  vCPU: 4 → 2
  メモリ: 8GB → 5GB

Cost Impact(Fargate):
  Before: 4 vCPU × $0.04096/時間 + 8GB × $0.004445/時間 = $0.20/時間
  After:  2 vCPU × $0.04096/時間 + 5GB × $0.004445/時間 = $0.104/時間
  
削減額: 100 タスク × ($0.20 - $0.104) × 24 × 30 = $27,648/月

9. Aurora インスタンスサイジング

シナリオ: Aurora MySQL・3 台の db.r5.xlarge クラスタ

実測:
  Primary: CPU 25%・メモリ 30%
  Read Replica 1: CPU 18%・メモリ 25%
  Read Replica 2: CPU 22%・メモリ 28%

推奨:
  Primary: db.r5.xlarge → db.r6g.large
  Replica 1-2: db.r5.xlarge → db.r6g.large

削減額:
  Before: 3 × $3.50 = $10.50/時間
  After:  3 × $1.62 = $4.86/時間
  
月次削減: ($10.50 - $4.86) × 730 = $4,128/月

10. Organizations 全体の一括分析

シナリオ: 50 個のメンバーアカウント・計 5,000 リソース

実施:
  1. 管理アカウントで Optimizer を有効化
  2. include-member-accounts フラグを設定
  3. 全アカウントのメトリクスを一元収集

結果:
  全リソースの推奨を一元管理
  
  年間削減見積もり:
    EC2: $800,000
    Lambda: $150,000
    EBS: $200,000
    RDS: $100,000
    Total: $1,250,000

設定・操作の具体例

CLI 操作(AWS CLI)

1. Compute Optimizer 有効化(アカウントレベル)

# アカウントで有効化
aws compute-optimizer update-enrollment-status \
  --status Active

# 確認
aws compute-optimizer get-enrollment-status

2. Organizations 全体での有効化

# 管理アカウントから実行
aws compute-optimizer update-enrollment-status \
  --status Active \
  --include-member-accounts

# 確認(レスポンス例)
# {
#   "status": "ACTIVE",
#   "statusReason": "Account is active for compute optimizer"
# }

3. Enhanced Observability の有効化(有料)

# 14 日 → 93 日に拡張
aws compute-optimizer put-recommendation-preferences \
  --resource-type Ec2Instance \
  --scope Name=Ec2Instance,Value=All \
  --enhanced-infrastructure-metrics Active

4. EC2 推奨事項の取得

# 特定インスタンスの推奨
aws compute-optimizer get-ec2-instance-recommendations \
  --instance-arns arn:aws:ec2:ap-northeast-1:123456789012:instance/i-0123456789abcdef0 \
  --query 'instanceRecommendations[*].{
    InstanceType:currentInstanceType,
    Finding:finding,
    RecommendedType:recommendationOptions[0].instanceType,
    MonthlySavings:recommendationOptions[0].savingsOpportunity.estimatedMonthlySavings.value,
    PerfRisk:recommendationOptions[0].performanceRisk
  }' \
  --output table

5. 過剰プロビジョニングされたインスタンスを一括取得

aws compute-optimizer get-ec2-instance-recommendations \
  --filters name=Finding,values=OVER_PROVISIONED \
  --query 'instanceRecommendations[*].{
    Instance:instanceArn,
    CurrentType:currentInstanceType,
    BestOption:recommendationOptions[0].instanceType,
    EstimatedSavings:recommendationOptions[0].savingsOpportunity.estimatedMonthlySavings.value
  }' \
  --output csv > over-provisioned-instances.csv

6. Lambda 関数の推奨事項

aws compute-optimizer get-lambda-function-recommendations \
  --filters name=Finding,values=OVER_PROVISIONED \
  --query 'lambdaFunctionRecommendations[*].{
    Function:functionArn,
    CurrentMemory:currentMemorySize,
    RecommendedMemory:memorySizeRecommendationOptions[0].memorySize,
    MonthlySavings:memorySizeRecommendationOptions[0].savingsOpportunity.estimatedMonthlySavings.value
  }' \
  --output table

7. EBS ボリューム(gp2 → gp3 推奨)

aws compute-optimizer get-ebs-volume-recommendations \
  --filters name=Finding,values=OPTIMIZABLE \
  --query 'volumeRecommendations[*].{
    VolumeId:volumeArn,
    CurrentType:currentConfiguration.volumeType,
    RecommendedType:volumeRecommendationOptions[0].configuration.volumeType,
    MonthlySavings:volumeRecommendationOptions[0].savingsOpportunity.estimatedMonthlySavings.value
  }' \
  --output table

8. 推奨事項を S3 にエクスポート

# EC2 推奨をCSV でS3 エクスポート
aws compute-optimizer export-ec2-instance-recommendations \
  --s3-destination-config '{
    "bucket": "my-compute-optimizer-exports",
    "keyPrefix": "recommendations/2026-04/"
  }' \
  --file-format Csv \
  --fields instanceName,instanceArn,finding,recommendationOptions.instanceType,recommendationOptions.estimatedMonthlySavings.value

# 完了を待機
aws s3 ls s3://my-compute-optimizer-exports/recommendations/2026-04/

SDK 操作(Python)

1. EC2 推奨事項を取得して CSV に出力

import boto3
import csv
from datetime import datetime

def get_ec2_recommendations_to_csv():
    client = boto3.client('compute-optimizer', region_name='ap-northeast-1')
    
    # 推奨取得(ページネーション対応)
    paginator = client.get_paginator('get_ec2_instance_recommendations')
    
    records = []
    for page in paginator.paginate(filters=[
        {'name': 'Finding', 'values': ['OVER_PROVISIONED']}
    ]):
        for rec in page.get('instanceRecommendations', []):
            for opt in rec.get('recommendationOptions', []):
                records.append({
                    'InstanceId': rec['instanceArn'].split('/')[-1],
                    'CurrentType': rec['currentInstanceType'],
                    'RecommendedType': opt['instanceType'],
                    'MonthlySavings': opt['savingsOpportunity']['estimatedMonthlySavings']['value'],
                    'PerfRisk': opt['performanceRisk'],
                    'Finding': rec['finding']
                })
    
    # CSV に保存
    csv_file = f"recommendations-{datetime.now().strftime('%Y%m%d-%H%M%S')}.csv"
    with open(csv_file, 'w', newline='') as f:
        writer = csv.DictWriter(f, fieldnames=records[0].keys())
        writer.writeheader()
        writer.writerows(records)
    
    print(f"Saved {len(records)} recommendations to {csv_file}")
    return records

2. Organizations 全体の推奨事項を集約

import boto3

def get_org_wide_recommendations():
    organizations = boto3.client('organizations')
    compute_optimizer = boto3.client('compute-optimizer', region_name='ap-northeast-1')
    
    # メンバーアカウント一覧
    accounts = organizations.list_accounts()['Accounts']
    
    total_savings = 0
    for account in accounts:
        if account['Status'] != 'ACTIVE':
            continue
        
        account_id = account['Id']
        
        # 各アカウントの推奨を取得
        recommendations = compute_optimizer.get_recommendation_summaries(
            account_ids=[account_id]
        )
        
        for summary in recommendations.get('recommendationSummaries', []):
            summaries = summary.get('summaries', [])
            for s in summaries:
                if s.get('name') == 'OVER_PROVISIONED':
                    # ここで削減額を計算(simplified)
                    pass
    
    print(f"Total estimated annual savings: ${total_savings:,.0f}")

IaC 操作(CloudFormation / Terraform)

CloudFormation - 自動実装スタック

AWSTemplateFormatVersion: '2010-09-09'
Description: 'Compute Optimizer Automation'

Resources:
  ComputeOptimizerRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: compute-optimizer-automation-role
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/ComputeOptimizerFullAccess
        - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
      Policies:
        - PolicyName: EC2ModifyInstance
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - ec2:ModifyInstanceAttribute
                  - ec2:DescribeInstances
                Resource: '*'

  ComputeOptimizerAutomationLambda:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: compute-optimizer-automation
      Handler: index.lambda_handler
      Role: !GetAtt ComputeOptimizerRole.Arn
      Runtime: python3.11
      Code:
        ZipFile: |
          import boto3
          import json
          
          compute_optimizer = boto3.client('compute-optimizer')
          ec2 = boto3.client('ec2')
          
          def lambda_handler(event, context):
              # オーバープロビジョニング推奨を自動取得
              response = compute_optimizer.get_ec2_instance_recommendations(
                  filters=[{'name': 'Finding', 'values': ['OVER_PROVISIONED']}],
                  maxResults=100
              )
              
              for rec in response.get('instanceRecommendations', []):
                  # 検証ロジック(手動確認)
                  print(f"Instance {rec['instanceArn']}: {rec['currentInstanceType']} -> {rec['recommendationOptions'][0]['instanceType']}")
              
              return {
                  'statusCode': 200,
                  'body': json.dumps('Recommendations retrieved')
              }

  ComputeOptimizerSchedule:
    Type: AWS::Events::Rule
    Properties:
      Description: Daily Compute Optimizer Report
      ScheduleExpression: cron(0 9 * * ? *)
      State: ENABLED
      Targets:
        - Arn: !GetAtt ComputeOptimizerAutomationLambda.Arn
          Id: compute-optimizer-target

  PermissionForEventsToInvokeLambda:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !Ref ComputeOptimizerAutomationLambda
      Action: lambda:InvokeFunction
      Principal: events.amazonaws.com
      SourceArn: !GetAtt ComputeOptimizerSchedule.Arn

Terraform - 推奨事項エクスポート設定

resource "aws_s3_bucket" "compute_optimizer_exports" {
  bucket = "my-org-compute-optimizer-exports"
  
  tags = {
    Name = "Compute Optimizer Exports"
  }
}

resource "aws_s3_bucket_versioning" "exports_versioning" {
  bucket = aws_s3_bucket.compute_optimizer_exports.id
  
  versioning_configuration {
    status = "Enabled"
  }
}

resource "aws_lambda_function" "export_recommendations" {
  filename      = "export_lambda.zip"
  function_name = "compute-optimizer-export"
  role          = aws_iam_role.lambda_role.arn
  handler       = "index.handler"
  runtime       = "python3.11"
  
  environment {
    variables = {
      S3_BUCKET = aws_s3_bucket.compute_optimizer_exports.id
    }
  }
}

resource "aws_cloudwatch_event_rule" "daily_export" {
  name                = "compute-optimizer-daily-export"
  description         = "Daily export of compute optimizer recommendations"
  schedule_expression = "cron(0 0 * * ? *)"
}

resource "aws_cloudwatch_event_target" "lambda_target" {
  rule      = aws_cloudwatch_event_rule.daily_export.name
  target_id = "ComputeOptimizerExport"
  arn       = aws_lambda_function.export_recommendations.arn
}

類似サービス比較表

観点 Compute Optimizer AWS Trusted Advisor Cloudability Densify Spot.io Eco
対応リソース EC2/Lambda/EBS/RDS/ECS/Aurora 多数(セキュリティ・コスト・パフォーマンス) 多クラウド対応 多クラウド対応 AWS 特化
分析期間 14日(93日 Enhanced) リアルタイム カスタマイズ可 カスタマイズ可 リアルタイム
ML ベース ❌(ルールベース)
コスト削減推奨
スポット推奨 ASG のみ ✅(専門)
Graviton 推奨
Organizations 統合
基本機能 無料 Free Tier 有料 有料 有料
カスタムメトリクス ✅(Datadog/Dynatrace) 限定的
推奨用途 AWS 環境・低コスト・内製 総合的なベストプラクティス確認 マルチクラウド・複雑な要件 マルチクラウド・詳細分析 スポット特化・AWS

ベストプラクティス

✅ 推奨事項

  1. 全 AWS アカウントで常時有効化

    • Organizations で一元管理
    • 新規アカウント作成時に自動有効化
  2. 14 日以上の安定稼働後に推奨実装

    • メトリクスの蓄積を十分に行う
    • ベースラインが正確に形成されるまで待機
  3. 月次レビュープロセスの確立

    • 月 1 回、推奨事項を一覧化
    • Finding ごとに優先度付け(UNDER → OVER_PROVISIONED)
  4. 小規模テストから段階的実装

    • 最初は PerfRisk < 2.0 のもの(最小リスク)から開始
    • 1 週間の安定稼働を確認後、次の推奨に進む
  5. 自動化ツール・CloudFormation で実装

    • 手動変更は避ける
    • Infrastructure as Code で追跡可能にする
  6. カスタムメトリクスの活用(Enhanced Observability)

    • Datadog・Dynatrace メモリメトリクスを統合
    • より正確なメモリ推奨を得る
  7. コスト影響を見える化

    • S3 エクスポートで毎月のコスト削減を定量化
    • 経営層への報告・ROI 評価

❌ アンチパターン

  1. 14 日未満での実装判断

    • データが不十分でリスク高い
    • NONE(推奨不可)状態での判断は避ける
  2. PerfRisk を無視

    • 高いリスク推奨(6~10)の即座実装は危険
    • 詳細検証なしに本番反映は禁止
  3. 全推奨を一括実装

    • インフラが一斉に変更されるリスク
    • ロードバランサー・フェイルオーバーの負荷集中
  4. 定期的な見直しなし

    • 新規ワークロード追加時に推奨が変わる
    • 月 1 回最低の見直しを実施
  5. Under Provisioned の放置

    • パフォーマンス問題につながる
    • 最優先で改善すべき

トラブルシューティング表

現象 原因 対応
推奨が表示されない 14 日未満のメトリクス蓄積 / CloudWatch 無効 メトリクスの蓄積を 14 日待機・CloudWatch Agent 導入
Finding が NONE メトリクスが収集されていない CloudWatch Metrics の確認・IAM 権限確認
推奨が正確でない CPU・メモリメトリクスが正確でない CloudWatch Agent / カスタムメトリクスの有効化
高いパフォーマンスリスク 推奨インスタンスがコア数・メモリが大幅に少ない PerfRisk < 4.0 の推奨を優先・詳細検証後に実装
Organizations 統合が動作しない IAM 権限・管理アカウント設定 管理アカウントで --include-member-accounts フラグ確認
S3 エクスポートが失敗 S3 バケット権限・エクスポート設定 S3 Bucket Policy・IAM ロール権限の確認
Lambda 推奨がおかしい 実行時間・メモリ プロフィル異常 Lambda Insights / X-Ray で詳細確認

2025-2026 最新動向

2025 年 Q1: Generative Insights 拡張

  • AWS が Compute Optimizer に生成 AI による推奨を統合予定
  • テキストベースの詳細化学的理由・最適化シナリオが提示される

2025 年 Q2: RDS Aurora 推奨強化

  • Aurora MySQL 8.0・PostgreSQL 15 での推奨精度向上
  • Read Replica 配置・キャッシュレイヤー推奨も追加予定

2025 年 Q3: Spot Instance 統合

  • ASG だけでなく、Single EC2 への Spot 推奨拡張
  • コスト削減と Spot Interruption リスク通知の統合

2026 年: AI-Driven Auto-Right-Sizing

  • 推奨事項を自動実装するオプション提供予定
  • CloudFormation StackSets で Organizations 全体に自動展開

学習リソース・参考文献

AWS 公式ドキュメント(8+)

  1. AWS Compute Optimizer User Guide
  2. Compute Optimizer API Reference
  3. Getting Started with Compute Optimizer
  4. EC2 Instance Recommendations
  5. Lambda Function Recommendations
  6. EBS Volume Recommendations
  7. Exporting Recommendations
  8. Organization Account Recommendations

ベンダー・OSS リソース(5+)

  1. Cloudability Cost Optimization
  2. Densify - AI-Powered Cloud Resource Optimization
  3. Spot.io Eco - Spot Instance Management
  4. AWS Trusted Advisor
  5. CloudHealth by VMware - Cost Optimization

AWS ブログ・ケーススタディ

  1. Optimizing Costs with Compute Optimizer
  2. Reducing EC2 Costs through Right-Sizing
  3. Lambda Cost Optimization Best Practices

実装例・チェックリスト

実装チェックリスト

  • [ ] Compute Optimizer をアカウント / Organizations で有効化
  • [ ] CloudWatch Metrics が正常に送信されていることを確認
  • [ ] 14 日間のメトリクス蓄積を待機
  • [ ] 推奨事項ダッシュボードで確認・集計
  • [ ] Finding ごとに優先度付け(Under Provisioned → Over Provisioned)
  • [ ] PerfRisk < 2.0 の推奨から開始(テスト環境での検証)
  • [ ] CloudFormation StackSets / Terraform で自動実装
  • [ ] 本番環境での 1~2 週間の安定稼働確認
  • [ ] 削減額の定量化・経営層へ報告
  • [ ] 月次レビュープロセスの確立

削減見積もりテンプレート

[削減計算シート]

リソースタイプ: EC2 Instances
現在の構成: m5.xlarge × 100 台
推奨構成: m5.large × 100 台

現在のコスト: $0.192/時間 × 100 台 × 730 時間 = $14,016/月
推奨後のコスト: $0.096/時間 × 100 台 × 730 時間 = $7,008/月

月次削減額: $7,008
年間削減額: $84,096

ROI: 100%(単なる削減・追加コスト無)

まとめ

AWS Compute Optimizer「ML ベースでリソースサイズを最適化する無料の推奨サービス」。EC2・Lambda・EBS・RDS・Aurora・ECS の過剰プロビジョニング・過少プロビジョニングを検出し、具体的な変更先と月次コスト削減額を定量化。Organizations 全体での一元管理・自動エクスポート・Graviton 移行推奨により、年間数百万ドルのコスト削減機会を提供する。

基本機能が無料のため、全 AWS 環境での常時有効化を強く推奨。月次レビュー・段階的実装・PerfRisk 評価を組み合わせることで、安全かつ効果的なリソース最適化が可能。

最終更新:2026-04-26 バージョン:v2.0