サイトアイコン 協栄情報ブログ

【AWS初心者向け】LambdaでEC2インスタンスの自動起動/停止を設定する手順


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

どうも、クラ本部の黒田です。
あっという間に三連休が終わりましたね。
今回はLambdaを使用して、指定したEC2インスタンスの自動的な起動と停止を行う方法についてご紹介します。この設定を行うことで、定期的なスケジュールに従って特定なEC2インスタンスを操作できます。それでは、構築手順を見ていきましょう。

■ はじめに

AWS Lambdaを利用してEC2インスタンスの自動起動と停止を設定することは、運用効率の向上やコスト削減など、さまざまなメリットをもたらします。以下にその主な利点をご紹介します。

  1. コスト最適化
    EC2インスタンスは実行中の時間に対して課金されます。Lambdaを使用して自動的にEC2インスタンスを停止することで、必要な時間だけインスタンスを実行し、無駄なコストを削減できます。例えば、夜間や休日など、利用されていない時間帯にインスタンスを停止することで、コストを最適化することができます。

  2. 作業効率の向上
    従来は手動でEC2インスタンスの起動や停止を行う必要がありましたが、Lambdaを使用することでこれらの操作を自動化できます。定期的なスケジュールに従ってインスタンスを起動/停止させるため、運用作業の手間が軽減され、作業効率が向上します。

  3. リソースの最適利用
    EC2インスタンスが必要なときだけ起動されるため、リソースの最適利用が可能です。一時的な処理やバッチ処理など、特定の時間帯にのみインスタンスが必要な場合でも、自動化された運用によって無駄なリソース使用を避けることができます。

  4. 24/7可用性の確保
    Lambda関数を使用して自動起動/停止を設定することで、必要なタイミングでインスタンスを自動的に起動することができます。これにより、24時間365日の可用性を確保しつつ、必要なときだけリソースを使用できるようになります。

  5. 人為的ミスの削減
    手動での起動や停止操作では、人為的ミスが発生する可能性があります。Lambdaを使用した自動化により、定期的な運用作業が自動化されるため、ヒューマンエラーを減少させることができます。

これらのメリットを享受するために、Lambdaを使用してEC2インスタンスの自動起動/停止を設定することを検討してみてください。運用の効率化とコスト削減に貢献する手法として、Lambdaの活用は非常に有益です。

■ 構成図


■ 実装概要

■ 前提条件

■ 実装手順

1. IAMロールの作成

最初に、Lambda関数がEC2インスタンスを操作するための適切な権限を持つIAMロールを作成します。


2. Lambda関数の作成

関数コードは以下の通りで必要な部分修正する上、貼り付けてご利用ください。

   import boto3

   def lambda_handler(event, context):
       # EC2クライアントの初期化
       ec2 = boto3.client('ec2', region_name='ap-northeast-1')

       # 起動または停止するインスタンスIDを指定
       instance_id = 'EC2_instance_id'

       # インスタンスの現在の状態を取得
       response = ec2.describe_instances(InstanceIds=[instance_id])
       instance_state = response['Reservations'][0]['Instances'][0]['State']['Name']

       if instance_state == 'running':
           # インスタンスが起動中の場合は停止させる
           ec2.stop_instances(InstanceIds=[instance_id])
       elif instance_state == 'stopped':
           # インスタンスが停止中の場合は起動させる
           ec2.start_instances(InstanceIds=[instance_id])

※「Deploy」を押さないと、適用されないので、ご注意!


3. トリガーの設定


4. 正常に実行された場合の通知設定



これで設定が完了しました!Lambda関数が指定したCloudWatch Eventsルールに従ってEC2インスタンスを自動的に起動/停止します。

■ 動作確認

設定が正しく行われているか、トリガーが機能しているかを確認しましょう。

・ スケジュールされた時間に正常に実行された通知メールを受信


・CloudWatch ロググループより、実行Logが出力されていることを確認

/aws/lambda/Auto_EC2_Instances

■ 最後に

以上がLambdaを使用してEC2インスタンスの自動起動/停止を設定する手順です。設定が完了したら、自動的な運用効率の向上を実感できることでしょう。※ 作成したリソースの削除を忘れずに!!!

この手順に従ってLambdaを利用すれば、EC2インスタンスの管理がより簡単になります。ぜひお試しください!

では、皆さん、また次回お会いしましょう。

以下はクラ本部メンバー記事のご紹介です。

↑↑↑クラ本部メンバーが書いた記事のご紹介 ↑↑↑、合わせてやってみるのもいいかと

モバイルバージョンを終了