AWS

AWS EC2インスタンスタイプを自動でダウングレードする方法を解説!

深夜帯などアクセスが少ない時間にインスタンスタイプを小さくして、

コストを削減したいと考えている方も多いのではないでしょうか?

今回は、EventBridgeとSystems Manager Automationを使って、EC2インスタンスタイプを自動的にダウングレードする方法を詳しく解説します。

なぜインスタンスタイプの自動ダウングレードが必要か

多くの企業では、日中のピーク時に合わせてインスタンスタイプを選択しています。

しかし、深夜帯はアクセスが少なくリソースが余っているケースが多いです。

このような状況で、自動的にインスタンスタイプをダウングレードすることで、最大30-50%のコスト削減が可能になります。

実装方法の概要

主な実装方法として、以下の2つのアプローチがあります:

実装方法メリットデメリット
EventBridge + SSM Automationノーコードで実装可能
管理が容易
柔軟性に制限あり
Lambda + EventBridge柔軟なカスタマイズ可能
複雑な条件設定可能
実装コストが高い
保守が必要

今回は、より簡単に実装できるEventBridge + SSM Automationの方法を詳しく解説します。

必要な権限と事前準備

IAMロールの作成

以下の権限を持つIAMロールを作成する必要があります:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartAutomationExecution",
                "ec2:ModifyInstanceAttribute",
                "ec2:StopInstances",
                "ec2:StartInstances"
            ],
            "Resource": "*"
        }
    ]
}

信頼関係の設定

IAMロールの信頼関係には、以下のサービスを追加します:

  • events.amazonaws.com
  • ssm.amazonaws.com

Systems Manager Automationの設定

ドキュメントの選択

AWS提供のAWS-ResizeInstanceドキュメントを使用します。

このドキュメントは以下の処理を自動的に行います:

  1. インスタンスの停止
  2. インスタンスタイプの変更
  3. インスタンスの起動

パラメータの設定

必要なパラメータは以下の通りです:

  • InstanceId: 対象のEC2インスタンスID
  • InstanceType: 変更後のインスタンスタイプ
  • AutomationAssumeRole: 作成したIAMロールのARN

EventBridgeルールの作成

スケジュール設定

深夜帯にダウングレード、朝にアップグレードする場合の設定例:

# 深夜1時にダウングレード
cron(0 16 * * ? *)

# 朝9時にアップグレード
cron(0 0 * * ? *)

ターゲットの設定

Systems Manager Automationをターゲットとして選択し、以下を設定します:

  • ドキュメント名: AWS-ResizeInstance
  • パラメータ: インスタンスIDと変更後のインスタンスタイプ
  • 実行ロール: 作成したIAMロール

注意点と制限事項

インスタンスタイプの互換性

全てのインスタンスタイプ間で変更が可能なわけではありません。

同じインスタンスファミリー内での変更を推奨します:

  • t3.large → t3.small
  • m5.xlarge → m5.large

ダウンタイムへの対応

インスタンスタイプの変更には、一時的な停止が必要です。

以下の対策を検討してください:

  • Auto Scalingグループの利用
  • 複数AZへの配置
  • メンテナンス時間帯での実行

運用上の推奨事項

モニタリングの設定

以下の項目を監視することを推奨します:

  • CPU使用率
  • メモリ使用率
  • ネットワークスループット
  • アプリケーションのレスポンスタイム

段階的な導入

  1. 検証環境での十分なテスト
  2. 非重要システムでの試験運用
  3. 本番環境への段階的な展開

トラブルシューティング

よくある問題と対処法

  1. インスタンスタイプ変更失敗

    • 互換性の確認
    • 十分なキャパシティの確保
  2. 自動化が実行されない

    • IAM権限の確認
    • EventBridgeルールの状態確認
  3. パフォーマンス低下

    • メトリクスの確認
    • インスタンスタイプの見直し

まとめ

自動でのインスタンスタイプダウングレードは、コスト最適化の有効な手段です。

ただし、以下の点に注意が必要です:

  • 十分なテストの実施
  • モニタリングの重要性
  • 段階的な導入

適切に設計・実装することで、コスト削減と安定運用の両立が可能になります。

-AWS