Lambda と EventBridge で EC2 インスタンスを自動的に停止してみた

Lambda と EventBridge で EC2 インスタンスを自動的に停止してみた

Clock Icon2024.11.11

はじめに

こんにちは!
アノテーション界の赤井直正、香園紳瑛(かぞの しんえい)です!

AWS Certified SysOps Administrator - Associate 試験の定番アーキテクチャである、Lambda と EventBridge で EC2 インスタンスを自動的に停止してみた ので紹介します。

ハンズオン

Step1. Lambda 関数の作成

  1. Lambda を検索し、関数の作成 を押す

  1. 関数名とランタイム(今回は Python 3.12 で実行)を入力 & アーキテクチャ arm64 を選択し、関数の作成 を押す
    スクリーンショット 2024-10-29 13.47.06

  1. コードセクションで EC2 インスタンスを停止させるコードを lambda_function.py ファイルに入力し、Deploy を押す
インスタンスを停止する Python コード for Lambda
import boto3

def lambda_handler(event, context):
    # EC2クライアントを作成
    ec2 = boto3.client('ec2')

    # 停止したいインスタンスのIDを指定
    instance_id = 'i-1234567890abcdef0'  # これを実際のインスタンスIDに置き換えてください

    try:
        # インスタンスを停止
        response = ec2.stop_instances(InstanceIds=[instance_id])

        print(f"Stopping EC2 instance: {instance_id}")
        print(f"Response: {response}")

        return {
            'statusCode': 200,
            'body': f'Successfully initiated stop for instance {instance_id}'
        }

    except Exception as e:
        print(f"Error stopping instance {instance_id}: {str(e)}")
        return {
            'statusCode': 500,
            'body': f'Error stopping instance {instance_id}: {str(e)}'
        }

  1. 設定セクションの アクセス権限 を選択し、ロール名のリンクを押し、許可を追加 から ポリシーをアタッチ を選択
    スクリーンショット 2024-10-29 14.44.12

  1. AmazonEC2FullAccess を検索し、許可を追加 を押す
    スクリーンショット 2024-10-29 14.45.19

  1. 手順 5 のリンクの上にある 編集 を押し、タイムアウトを 10 秒に設定
    スクリーンショット 2024-10-29 14.38.56

Step2. EventBridge ルールの作成

  1. EventBridge を検索し、スケジューラセクションの スケジュール を選択し、スケジュールを作成 を押す
    スクリーンショット 2024-10-29 16.51.06

  1. スケジュール名 とその 説明 を入力
    スクリーンショット 2024-10-29 16.52.57

  1. 定期的なスケジュールcron ベースのスケジュール を選択し、cron 式を入力して 次へ を押す(例:毎日 17:15 に停止する cron 式)
    スクリーンショット 2024-10-29 16.54.11

  1. ターゲットで AWS Lambda を Invoke で 自分で作成した Lambda 関数 を選択して 次へ を押す
    スクリーンショット 2024-10-29 17.06.56
    スクリーンショット 2024-10-29 17.09.33

  1. スケジュール完了後のアクションで NONE を選択して 次へ を押す
    スクリーンショット 2024-10-29 17.13.50

  1. 設定に不備がなければ スケジュールを作成 を押す

  1. 指定した時間に EC2 インスタンスが停止しているか確認
    スクリーンショット 2024-10-29 15.13.32

さいごに

これで AWS Certified SysOps Administrator - Associate 試験の合格確定ですね。
長く険しい道のり、大変お疲れ様でした。
君に幸せあれ!

最後までありがとうございました!
また会いましょーう!

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.