

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# イベントパターン構文
<a name="eb-create-pattern"></a>

イベントパターンを作成するには、イベントパターンにマッチングするイベントのフィールドを指定します。照合に使用するフィールドのみを指定します。

例えば、次のイベントパターンの例では、3 つのフィールドの値しか指定していません。最上位のフィールド `"source"` および `"detail-type"` と、`"detail"` オブジェクトフィールド内部の `"state"` フィールドです。ルールを適用するとき、EventBridge はイベント内の他のフィールドはすべて無視します。

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

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

イベントと一致するパターンを記述するときは、`TestEventPattern` API または `test-event-pattern` CLI コマンドを使用して、パターンが正しいイベントと一致することをテストできます。詳細については、「[TestEventPattern](https://docs.aws.amazon.com/AmazonCloudWatchEvents/latest/APIReference/API_TestEventPattern.html)」を参照してください。

## イベント値の照合
<a name="eb-filtering-match-values"></a>

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

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

詳細については、「[複数のフィールド値での一致](eb-event-patterns-arrays.md)」を参照してください。

## Amazon EventBridge イベントパターンでの比較演算子の使用
<a name="eb-event-patterns-content-based-filtering"></a>

Amazon EventBridge は、イベントパターンを使用した宣言型のコンテンツフィルタリングをサポートしています。コンテンツのフィルタリングを使用すると、非常に限定的な条件下でのみイベントに一致する複雑なイベントパターンを作成できます。例えば、次の場合にイベントと一致するイベントパターンを作成できます。
+ イベントのフィールドが特定の数値範囲内にある場合。
+ イベントは特定の IP アドレスから発生する場合。
+ イベント JSON に特定のフィールドが存在しない場合。

詳細については、「[比較演算子](eb-create-pattern-operators.md)」を参照してください。

## イベントパターンを作成する際の考慮事項
<a name="eb-create-pattern-considerations"></a>

イベントパターンを作成する際に考慮すべき点は次のとおりです。
+ EventBridge は、イベントパターンに含まれていないフィールドをイベント内で無視します。実際には、`"*": "*"` とワイルドカードを指定すると、イベントパターンに含まれないフィールドにも一致します。
+ イベントパターンが一致する値は、JSON のルールに従います。二重引用符 (") で囲んだ文字列、数値、およびキーワード `true`、`false`、および `null` を含めることができます。
+ 文字列の場合、Eventbridge は文字単位の厳密な一致を使用し、大文字の小文字化など文字列の正規化は行われません。
+ 数値の場合、EventBridge は文字列表現を使用します。たとえば、300、300.0、3.0e2 は等しいとはみなされません。
+ 同じ JSON フィールドに複数のパターンが指定されている場合、EventBridge では最後のパターンのみを使用します。
+ EventBridge がイベントパターンをコンパイルして使用する場合、結合文字としてドット (.) が使用されることに注意してください。

  つまり、EventBridge は以下のイベントパターンを同一として扱います。

  ```
  ## has no dots in keys
  { "detail" : { "state": { "status": [ "running" ] } } }
  
  ## has dots in keys
  { "detail" : { "state.status": [ "running" ] } }
  ```

  また、どちらのイベントパターンも次の 2 つのイベントと一致することになります。

  ```
  ## has no dots in keys
  { "detail" : { "state": { "status": "running" } } }
  
  ## has dots in keys
  { "detail" : { "state.status": "running"  } }
  ```
**注記**  
これは現在の EventBridge の動作を説明するものであり、これを変更しない根拠にすべきではありません。
+ 重複するフィールドを含むイベントパターンは無効です。パターンに重複するフィールドが含まれている場合、EventBridge は最終的なフィールド値のみを考慮します。

  例えば、以下のイベントパターンは同じイベントと一致します。

  ```
  ## has duplicate keys
  {
    "source": ["aws.s3"],
    "source": ["aws.sns"],
    "detail-type": ["AWS API Call via CloudTrail"],
    "detail":  {
        "eventSource": ["s3.amazonaws.com"],
        "eventSource": ["sns.amazonaws.com"]
    }
  }
  
  ## has unique keys
  {
    "source": ["aws.sns"],
    "detail-type": ["AWS API Call via CloudTrail"],
    "detail": { "eventSource": ["sns.amazonaws.com"] }
  }
  ```

  また、EventBridge は次の 2 つのイベントを同一イベントとして扱います。

  ```
  ## has duplicate keys
  {
    "source": ["aws.s3"],
    "source": ["aws.sns"],
    "detail-type": ["AWS API Call via CloudTrail"],
    "detail":  [
      {
        "eventSource": ["s3.amazonaws.com"],
        "eventSource": ["sns.amazonaws.com"]
      }
    ]
  }
  
  ## has unique keys
  {
    "source": ["aws.sns"],
    "detail-type": ["AWS API Call via CloudTrail"],
    "detail": [
      { "eventSource": ["sns.amazonaws.com"] }
    ]
  }
  ```
**注記**  
これは現在の EventBridge の動作を説明するものであり、これを変更しない根拠にすべきではありません。