ウェブサイト検索

AWS CloudWatchでLambda関数をトリガーするイベントを作成する方法


AWS CloudWatchでLambda関数をトリガーするイベントを作成する方法

このページで

  1. 前提条件
  2. 私たちは何をしますか?
  3. AWSにログインする
  4. Lambda関数をトリガーするためのCloudWatchイベントを作成する
  5. 結論

Amazon CloudWatch EventsはAWSリソースの変更を説明します。我々はイベントを一致させ、それらを1つまたは複数のターゲット関数にルーティングできます。CloudWatch Eventsは、運用上の変更が発生する際にそのことを知ります。たとえば、Cloudwatchルールで定義されたリソースが作成された場合、そのルールはそのことを知り、その結果としてターゲット関数をトリガーします。

進む前に、イベントルールを作成する前に、それの基本を理解しましょう。

  1. イベント:
    イベントは、AWS環境に変化があることを意味します。
  2. ルール:
    ルールはイベントを照合するために使用されます。ここでは、イベントが比較されて確認されます。
  3. ターゲット:
    ここではイベントが処理されます。ターゲットには、Amazon EC2インスタンス、AWS Lambda関数、Kinesisストリーム、Amazon ECSタスク、Step Functionsステートマシン、Amazon SNSトピック、Amazon SQSキュー、および組み込みターゲットが含まれる場合があります。

この記事では、EC2の状態変化のイベントをチェックし、Lambda関数をトリガーするイベントルールを作成します。Lambda関数について知らない場合は、こちらをクリックして1つ作成してください。Lambdaの機能はあなたの選択ですが、この文書では使用されていないEBSボリュームを削除するLambdaを紹介しています。この記事にはLambdaコードも記載しています。あなたの独自のLambda関数を使用しても構いません。

前提条件

  1. AWSアカウント(お持ちでない場合は作成してください)。
  2. ラムダ関数。

私たちは何をしますか?

  1. AWSにログインしてください。
  2. Lambda関数を起動するためのCloudWatchイベントルールを作成します。

AWSにログインする

こちらをクリックしてAWSログインページに移動してください。

上記のリンクをクリックすると、以下のようなウェブページが表示され、ログイン情報を使用してログインする必要があります。

アカウントに成功裏にログインすると、次のような画面が表示されます。

Lambda関数をトリガーするためのCloudWatchイベントを作成する

Cloudwatchイベントルールを作成するには、Cloudwatchを検索し、結果をクリックしてCloudwatchダッシュボードに移動します。

Cloudwatchダッシュボードの左側パネルで、イベントの下にあるルールをクリックします。

ここで、「ルールを作成」をクリックして、あなたの地域でLambda関数をトリガーする最初のルールを作成します。

「イベントパターン」ラジオボタンを選択し、サービス名の下で「EC2」を選択し、イベントタイプに「EC2インスタンス状態変更通知」を選択します。

既存のLambda関数をターゲットとして追加するには「ターゲットを追加」をクリックし、「詳細を設定」をクリックします。

ここをクリックして、あなたのためにLambda関数を作成する方法を学びましょう。次の参照用Lambdaコードをご覧ください。

ラムダコード:アカウントにラムダ関数がない場合は、このコードを使用してラムダ関数を作成します。

import boto3
ec2 = boto3.resource('ec2',region_name='eu-west-3')
 
def lambda_handler(event, context):
    for vol in ec2.volumes.all():
        if  vol.state=='available':
            if vol.tags is None:
                vid=vol.id
                v=ec2.Volume(vol.id)
                v.delete()
                print ('EBS Volume Deleted ' +vid)
                continue
            for tag in vol.tags:
                if tag['Key'] == 'Name':
                    value=tag['Value']
                    if value != 'DoNNotDel' and vol.state=='available':
                        vid=vol.id
                        v=ec2.Volume(vol.id)
                        v.delete()
                        print ('EBS Volume Deleted ' +vid) 

イベントに名前を付け、その説明を記入し、「ルールを作成」をクリックしてください。

これにより、EC2インスタンスの状態に変更があるたびにターゲットのLambda関数をトリガーするイベントルールが作成されます。

結論

この記事では、EC2インスタンスの状態の変化を示すCloudwatchイベントルールを作成し、ルールがイベントと一致したときにLambda関数をトリガーする方法を見ました。あなたの選択したターゲットを選ぶことができます。

関連記事: