Amazon EventBridge のイベントパターン - Amazon EventBridge

Amazon EventBridge のイベントパターン

イベントパターンは、一致するイベントと同じ構造をしています。ルールでは、イベントパターンを使用してイベントを選択し、ターゲットに送信します。イベントパターンは、イベントに一致するか、一致しないかのいずれかになります。

次のビデオでは、イベントパターンの基本について説明します。

次のイベントは、Amazon EC2 からの単純な AWS イベントです。

{ "version": "0", "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718", "detail-type": "EC2 Instance State-change Notification", "source": "aws.ec2", "account": "111122223333", "time": "2017-12-22T18:43:48Z", "region": "us-west-1", "resources": [ "arn:aws:ec2:us-west-1:123456789012:instance/i-1234567890abcdef0" ], "detail": { "instance-id": "i-1234567890abcdef0", "state": "terminated" } }

次のイベントパターンは、Amazon EC2 の instance-termination イベントすべてを処理します。

{ "source": ["aws.ec2"], "detail-type": ["EC2 Instance State-change Notification"], "detail": { "state": ["terminated"] } }

イベントパターンの作成

イベントパターンを作成するには、イベントパターンにマッチングするイベントのフィールドを指定します。照合に使用するフィールドのみを指定します。上のイベントパターンの例では、3 つのフィールドの値しか指定していません。最上位のフィールド “source” および “detail-type” と、“detail” オブジェクトフィールド内部の “state” フィールドです。ルールを適用するとき、EventBridge はイベント内の他のフィールドはすべて無視します。

イベントパターンがイベントに一致するには、イベントパターンに指定されているすべてのフィールド名がイベントに含まれている必要があります。フィールド名は、同じネスト構造になったイベントにも含まれていなければなりません。

EventBridge は、イベントパターンに含まれていないフィールドをイベント内で無視します。実際には、*:* とワイルドカードを指定すると、イベントパターンに含まれないフィールドにも一致します。

イベントパターンが一致する値は、JSON のルールに従います。二重引用符 (") で囲んだ文字列、数値、およびキーワード truefalse、および null を含めることができます。

文字列の場合、Eventbridge は文字単位の厳密な一致を使用し、大文字の小文字化など文字列の正規化は行われません。

数値の場合、EventBridge は文字列表現を使用します。たとえば、300、300.0、3.0e2 は等しいとはみなされません。

イベントと一致するパターンを記述するときは、TestEventPattern API または test-event-pattern CLI コマンドを使用して、パターンが正しいイベントと一致することをテストできます。詳細については、「TestEventPattern」を参照してください。

EventBridge で使用できるすべての比較演算子を次にまとめました。

比較 ルール構文

Null

UserId が Null

“UserID”: [ null ]

空白

LastName が空白

“LastName”: [“”]

同等

Name が「Alice」

“Name”: [ “Alice” ]

および

Location が「New York」および、Day が「Monday」

“Location”: [ “New York” ], “Day”: [“Monday”]

または

PaymentType が「Credit」または「Debit」

“PaymentType”: [ “Credit”, “Debit”]

以外

Weather が「Raining」以外

“Weather”: [ { “anything-but”: [ “Raining” ] } ]

数値 (等しい)

Price が 100

“Price”: [ { “numeric”: [ “=”, 100 ] } ]

数値 (範囲)

Price が 10 より大きく 20 以下

“Price”: [ { “numeric”: [ “>”, 10, “<=", 20 ] } ]

存在する

ProductName が存在

“ProductName”: [ { “exists”: true } ]

存在しない

ProductName が存在しない

“ProductName”: [ { “exists”: false } ]

から始まる

Region が US にある

“Region”: [ {“prefix”: “us-“ } ]

値のマッチング

イベントパターンでマッチングする値は JSON 配列形式で、角かっこ ([ ]) で囲むと複数の値を指定できます。例えば、Amazon EC2 または AWS Fargate からのイベントをマッチングするには、次のパターンを使用できます。このパターンは、"source" フィールドの値が "aws.ec2" または "aws.fargate" のいずれかであるイベントに一致します。

{ "source": ["aws.ec2", "aws.fargate"] }

イベントとイベントパターンの例

イベントのマッチングには、JSON のデータ型と値をすべて使用できます。以下の例は、イベントとそれに一致するイベントパターンを示しています。

フィールドのマッチング

フィールドの値でマッチングすることができます。次の Amazon EC2 Auto Scaling イベントについて考えてみましょう。

{ "version": "0", "id": "3e3c153a-8339-4e30-8c35-687ebef853fe", "detail-type": "EC2 Instance Launch Successful", "source": "aws.autoscaling", "account": "123456789012", "time": "2015-11-11T21:31:47Z", "region": "us-east-1", "resources": [], "detail": { "eventVersion": "", "responseElements": null } }

上のイベントでは、マッチングに “responseElements” フィールドを使用できます。

{ "source": ["aws.autoscaling"], "detail-type": ["EC2 Instance Launch Successful"], "detail": { "responseElements": [null] } }

値の一致

以下は、Amazon Macie Classic のイベントの一部です。これについて考えてみましょう。

{ "version": "0", "id": "3e355723-fca9-4de3-9fd7-154c289d6b59", "detail-type": "Macie Alert", "source": "aws.macie", "account": "123456789012", "time": "2017-04-24T22:28:49Z", "region": "us-east-1", "resources": [ "arn:aws:macie:us-east-1:123456789012:trigger/trigger_id/alert/alert_id", "arn:aws:macie:us-east-1:123456789012:trigger/trigger_id" ], "detail": { "notification-type": "ALERT_CREATED", "name": "Scanning bucket policies", "tags": [ "Custom_Alert", "Insider" ], "url": "https://lb00.us-east-1.macie.aws.amazon.com/111122223333/posts/alert_id", "alert-arn": "arn:aws:macie:us-east-1:123456789012:trigger/trigger_id/alert/alert_", "risk-score": 80, "trigger": { "rule-arn": "arn:aws:macie:us-east-1:123456789012:trigger/trigger_id", "alert-type": "basic", "created-at": "2017-01-02 19:54:00.644000", "description": "Alerting on failed enumeration of large number of bucket policie "risk": 8 }, "created-at": "2017-04-18T00:21:12.059000", . . .

次のイベントパターンは、リスクスコアが 80 で、トリガーリスクが 8 のイベントと一致します。

{ "source": ["aws.macie"], "detail-type": ["Macie Alert"], "detail": { "risk-score": [80], "trigger": { "risk": [8] } } }