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

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

中級45Azure 実環境

ラボ概要

開発用やテスト用の 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 の基本的な読み書きができること(コードは本文にすべて記載されているため、書ける必要はありません)

ラボの構成

  1. 1リージョンを確認する
  2. 2対象となる EC2 インスタンスを起動する
  3. 3Lambda 用の IAM ロールを作成する
  4. 4EC2 を停止/起動する Lambda 関数を作成する
  5. 5関数コードを編集してデプロイする
  6. 6Lambda のタイムアウトを少し延ばす
  7. 7テストイベントで停止を確認する
  8. 8テストイベントで起動も確認する
  9. 9EventBridge Scheduler で「停止」スケジュールを作成する
  10. 10EventBridge Scheduler で「起動」スケジュールも作成する
  11. 11スケジュール一覧で状態を確認する
  12. 12CloudWatch Logs で実行ログを確認する
  13. 13動作確認
  14. 14完了チェックリスト
  15. 15後片付け

詳細な手順は、ラボ開始後に画面内のガイドとして表示されます。

構成図

構成図

参考リソース

参考リンク

このラボが対応する試験の模擬問題集

本番形式の問題で理解度を確認できます。各試験とも先頭 15 問は無料です。

DVA-C02AWS Developer – Associate練習テスト 4 回・全 200SAA-C03AWS Solutions Architect – Associate練習テスト 4 回・全 200