LoginSignup
7
1

【コスト削減】AWS EC2インスタンス 夜間休日自動停止方法 (5) 結局どの方法が一番よさそう? のまとめ

Posted at

1. はじめに

2. 方法の比較(個人的見解)

2.1 想定ユースケース

  • 数10台程度のインスタンスを夜間休日に一括で自動停止させたい。(例: 月~金の9:00AM~21:00PMのみインスタンスを起動)
  • 対象インスタンスは、インスタンスIDで指定すればよい。
  • 指定時間外のインスタンス起動などは許容する。(例:朝7:00AMに開発者が個別にインスタンスを起動)

2.2 お勧めの方法

  • 上記のようなユースケースであれば、方法(3)Amazon EventBridge Schedulerで実施するのが最も簡単。(実装が単一のAWSサービスで完結するため、管理面でも一番楽。)
  • 原理的には方法(1)、方法(2)も方法(3)とほぼ同じであり、LambdaやSSM Automationで対応しても難易度はあまり変わらない。既存のシステムがこれらを採用しているのであれば、わざわざ変える必要はなく、そのまま使えばよい。
  • 「起動・停止の状態を厳密に定義したい(指定時間外の起動は許容しない)」、「クロスアカウントで管理したい」、などの要件がある場合は、方法(4)を検討してもよい。

2.3 比較表

方法 (1) Lambda + EventBridge (2) SSM Automation + EventBridge (3) EventBridge Scheduler (4) Instance Scheduler
仕組み EventBridgeルールで、開始・停止用Lambdaを呼出し EventBridgeルールで、開始・停止用SSM Automation ドキュメントを呼出し EventBridge Schedulerで、開始・停止をするAPIを直接呼出し DynamoDBに登録されたスケジュールに従い、定期実行されるLambdaが開始・停止を制御
シンプル度
必要コンポーネント Lambda
EventBridge ルール
SSM Automation ドキュメント
EventBridge ルール
EventBridge Schedulerのみ Lambda
EventBridge ルール
DynamoDB
その他(KMSなど)
対象インスタンスの指定 インスタンスID インスタンスID インスタンスID タグ
その他備考 Lambda内のスクリプト修正により機能カスタマイズは可能 SSM Automation ドキュメント修正により機能カスタマイズは可能 既定のAPI一覧からターゲットアクションを選択(カスタマイズは基本不可) クロスアカウント管理など付加機能あり

3. 所感

  • ネットで検索するといろいろな方法があり混乱したが、一通り実機確認して、それぞれどのような仕組みなのかある程度理解することができた。自分で設定する場合は基本的には一番簡単な方法(3)Amazon EventBridge Schedulerを使うようにしたい。
  • 自分の管理対象のシステムには、ミドルウェア操作が追加で必要などの理由で単純に上記の方法でのインスタンス開始・停止ができず、いったん自動停止の対象外にしたものもあった。そういったものにも対処できるよう工夫して対象範囲を広げていきたい。
7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1