チュートリアル: イベントターゲットに渡されるものを Input Transformer を使用してカスタマイズする - Amazon CloudWatch Events

チュートリアル: イベントターゲットに渡されるものを Input Transformer を使用してカスタマイズする

注記

イベントを管理するには、Amazon EventBridge が好ましい方法です。CloudWatch Events と EventBridge は同じ基盤となるサービスと API ですが、EventBridge はより多くの機能を提供します。CloudWatch または EventBridge のいずれかで行った変更は、各コンソールに表示されます。詳細については、Amazon EventBridge を参照してください。

CloudWatch Events の入力変換機能を使用すると、イベントから取得したテキストを、ルールのターゲットに入力する前にカスタマイズできます。

イベントからの JSON パスを複数定義し、その出力をさまざまな変数に割り当てることができます。その後、こうした変数は、<variable-name> 形式の入力テンプレートで使用できます。文字 < および > はエスケープできません。

指定した変数と一致する JSON パスがイベントに存在しない場合、その変数は作成されず、出力には表示されません

このチュートリアルでは、インスタンスの状態変更イベントから Amazon EC2 インスタンスの instance-id と状態を抽出します。入力変換を使用して、そのデータを、Amazon SNS トピックに送信される読みやすいメッセージに入力します。ルールは、任意のインスタンスが任意の状態に変わった時点でトリガーされます。たとえば、このルールでは、次の Amazon EC2 インスタンスの状態変更通知イベントによって、「EC2 インスタンス i-1234567890abcdef0 の状態が停止に変更されました」という Amazon SNS メッセージが生成されます。

{ "id":"7bf73129-1428-4cd3-a780-95db273d1602", "detail-type":"EC2 Instance State-change Notification", "source":"aws.ec2", "account":"123456789012", "time":"2015-11-11T21:29:54Z", "region":"us-east-1", "resources":[ "arn:aws:ec2:us-east-1:123456789012:instance/ i-1234567890abcdef0" ], "detail":{ "instance-id":" i-1234567890abcdef0", "state":"stopped" } }

これを実現するには、instance 変数を、イベントからの $.detail.instance-id JSON パスにマッピングし、state 変数を $.detail.state JSON パスにマッピングします。次に、入力テンプレートを "EC2 インスタンス <instance> の状態が <state> に変更されました" と設定します。

ルールを作成する

入力変換を使用して、ターゲットに送信されるインスタンスの状態変更情報をカスタマイズするには

  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションペインで、[イベント]、[ルールの作成] の順に選択します。

  3. [イベントソース] で、以下の操作を実行します。

    1. [Event Pattern] を選択します。

    2. [Build event pattern to match events by service] を選択します。

    3. [EC2]、[EC2 インスタンスの状態変更通知] の順に選択します。

    4. [任意の状態]、[任意のインスタンス] を選択します。

  4. [ターゲット] で、[Add target (ターゲットの追加)]、[SNS トピック] を選択します。

  5. [Topic (トピック)] で、Amazon EC2 インスタンスの状態が変更されたときに通知を受け取る Amazon SNS トピックを選択します。

  6. [入力を設定する] と [Input Transformer] の順に選択します。

  7. 次のボックスに、「{"state" : "$.detail.state", "instance" : "$.detail.instance-id"}」と入力します

  8. 次のボックスに、「EC2 インスタンス <instance> の状態が <state>." に変更されました」と入力します

  9. [設定の詳細] を選択します。

  10. ルールの名前と説明を入力し、[Create rule] を選択します。