Amazon CloudWatchイベントは、AWSリソースの変更について説明します。イベントを照合し、それらを1つ以上のターゲット関数にルーティングできます。 CloudWatchイベントは、運用上の変更が発生したときにそれを知るようになります。 Cloudwatch Ruleで定義されたリソースが作成されている場合、ルールはそれを認識し、その代わりにターゲット関数をトリガーします。
イベントルールを作成する前に、その基本を理解しましょう。
- イベント :
イベントは、AWS環境に変更があることを意味します。 - ルール :
ルールは、イベントに一致するために使用されます。ここで、イベントが比較およびチェックされます。 - ターゲット :
ここでイベントが処理されます。ターゲットには、Amazon EC2インスタンス、AWS Lambda関数、Kinesisストリーム、Amazon ECSタスク、Step Functionsステートマシン、Amazon SNSトピック、Amazon SQSキュー、組み込みターゲットを含めることができます。
この記事では、EC2状態変更のイベントをチェックし、ラムダ関数をトリガーするイベントルールを作成します。 Lambda関数に気付いていない場合は、ここをクリックして1を作成してください。 Lambdaが行うことはあなたの選択ですが、このドキュメントには、未使用のEBSボリュームを削除するLambdaがあります。この記事ではLambdaコードについて説明しました。独自のLambda関数も自由に使用できます。
前提条件
- AWSアカウント(アカウントがない場合は作成します)。
何をしますか?
- AWSにログインします。
- Lambda関数をトリガーするCloudwatchイベントルールを作成します。
AWSにログイン
ここをクリックしてAWSログインページに移動します。
上記のリンクをクリックすると、ログイン情報を使用してログインする必要がある次のWebページが表示されます。
アカウントに正常にログインすると、次のような画面が表示されます。
Lambda関数をトリガーするCloudwatchイベントを作成します
Cloudwatchイベントルールを作成するには、cloudwatchを検索し、結果をクリックしてCloudwatchダッシュボードに移動します。
Cloudwatchダッシュボードで、左側のパネルの[イベント]の下にある[ルール]をクリックします。
ここで、[ルールの作成]をクリックして、お住まいの地域でラムダ関数をトリガーする最初のルールを作成します。
[イベントパターン]ラジオボタンを選択し、[サービス名]で[EC2]を選択し、[イベントタイプ]で[EC2インスタンス状態変更通知]を選択します。
[ターゲットの追加]をクリックして既存のLambda関数をターゲットとして追加し、[詳細の構成]をクリックします。
ここをクリックして、Lambda関数を作成する方法を学びます。次の参照ラムダコードを見つけてください。
ラムダコード: アカウントに1がない場合は、このコードを使用して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インスタンスの状態の変化を示し、ルールがイベントに一致したときにLambda関数をトリガーするCloudwatchイベントルールを作成する方法を説明しました。選択したターゲットを選択できます。