Lambda と EventBridge で EC2 を自動停止/起動してコスト最適化する

難易度:中級
所要時間:45 分

ラボ概要

Lambda(Python/boto3)で EC2 を停止/起動し、EventBridge Scheduler で定期実行する自動化をコンソールから構築します。

開発用やテスト用の EC2 インスタンスを止め忘れて、使っていない時間まで課金されてしまう——クラウドのコストでよくある無駄です。このラボでは、その無駄を自動でなくす「EC2 自動停止/起動」の仕組みを、マネジメントコンソールだけで構築します。

boto3 で EC2 を停止/起動する AWS Lambda 関数を作り、決まった時刻に呼び出す Amazon EventBridge Scheduler のスケジュールを 2 本(夜に停止・朝に起動)作成します。対象は特定のタグ(Name=lab-scheduler-target)が付いたインスタンスだけに絞り、IAM ロールには必要最小限の権限だけを与える、安全でコスト最適化に直結する自動化パターンを体験します。

ラボツールの「AWS マネジメントコンソールを開く」からコンソールへ入ると、学習用の cloud_user で自動サインインします。

学習目標

  • boto3(describe_instances / start_instances / stop_instances)で EC2 をプログラムから制御する方法を理解する
  • タグで対象インスタンスを安全に絞り込む考え方を身につける
  • Lambda の実行ロールに「最小権限」で EC2 操作とログ書き込みの許可を与える
  • Lambda のテストイベント(JSON ペイロード)で停止/起動の挙動を切り替えて確認する
  • Amazon EventBridge Scheduler の cron スケジュールでサーバーレス関数を定期実行する
  • スケジューラ用ロールと Lambda 実行ロールの役割の違いを理解する
  • CloudWatch Logs で実行結果を確認する

前提

  • ラボツールからフェデレーテッドコンソールに cloud_user ロールで自動サインインしていること
  • すべての操作を 東京リージョン (ap-northeast-1) で行うこと(IAM などグローバルサービスを除く)
  • サンドボックスのガードレール内であること(EC2 はこのラボでは t3.micro を使用。ガードレールでは t3 系を含む小さめのインスタンスが許可されています。EBS は小容量、$10 予算・2 時間セッション)
  • Python と JSON の基本的な読み書きができること(コードは本文にすべて記載されているため、書ける必要はありません)

ハンズオンラボとは?

本物の Azure リソースを使い、リスクなく試行錯誤しながら実践的なスキルを身につけられます。

他のラボを見る