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

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

注記

Amazon EventBridge is the preferred way to manage your events. CloudWatch イベント and EventBridge are the same underlying service and API, but EventBridge provides more features. Changes you make in either CloudWatch or EventBridge will appear in each console. For more information, see Amazon EventBridge.

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

イベントからの 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. https://console.aws.amazon.com/cloudwatch/ にある CloudWatch コンソールを開きます。

  2. ナビゲーションペインで、[Events]、[Create rule] の順に選択します。

  3. [Event source] で、以下の操作を実行します。

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

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

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

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

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

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

  6. [Configure input]、[Input Transformer] の順に選択します。

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

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

  9. [Configure details] を選択します。

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