Amazon のイベントパターンで使用する比較演算子 EventBridge - Amazon EventBridge

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

Amazon のイベントパターンで使用する比較演算子 EventBridge

で利用可能なすべての比較演算子の概要の下 EventBridge。

比較オペレーションは、$oranything-but を除いてリーフノードでのみ機能します。

比較 ルール構文 イベントバスのサポート パイプのサポート

And

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

"Location": [ "New York" ], "Day": ["Monday"]

あり

あり

Anything-but State は、「初期化中」以外の値です。

"state": [ { "anything-but": "initializing" } ]

あり

あり

Anything-but ( で開始)

リージョンが米国にありません。

"Region": [ { "anything-but": {"prefix": "us-" } } ]

あり

なし

Anything-but (末尾は )

FileName は .png 拡張子で終わりません。

"FileName": [ { "anything-but": { "suffix": ".png" } } ]

あり

なし

Anything-but (大文字と小文字は無視)

状態は、「初期化中」以外の値、または「」などのその他の大文字と小文字のバリエーションINITIALIZINGです。

"state": : [{ "anything-but": { "equals-ignore-case": "initializing" }}]}

あり

なし

ワイルドカードを使用するもの

FileName は、 を含むファイルパスではありません/lib/

"FilePath" : [{ "anything-but": { "wildcard": "*/lib/*" }}]

あり

なし

で始まる

リージョンは米国にあります。

"Region": [ {"prefix": "us-" } ]

あり

あり

で始まる (大文字と小文字は無視)

サービス名は、大文字と小文字に関係なく「eventb」で始まります。

{"service" : [{ "prefix": { "equals-ignore-case": "eventb" }}]}

あり

あり

LastName は空です。

"LastName": [""]

あり

あり

等しい

Name が「Alice」

"Name": [ "Alice" ]

あり

あり

等しい (大文字と小文字を区別しない)

Name が「Alice」

"Name": [ { "equals-ignore-case": "alice" } ]

あり

あり

で終わる

FileName .png 拡張機能で終わる

"FileName": [ { "suffix": ".png" } ]

あり

あり

で終わる (大文字と小文字は無視)

サービス名は、「tbridge」という文字、または「」などのその他の大文字と小文字のバリエーションで終わりTBRIDGEます。

{"service" : [{ "suffix": { "equals-ignore-case": "tBridge" }}]}

あり

あり

存在する

ProductName が存在する

"ProductName": [ { "exists": true } ]

あり

あり

存在しない

ProductName は存在しません

"ProductName": [ { "exists": false } ]

あり

あり

以外

Weather が「Raining」以外

"Weather": [ { "anything-but": [ "Raining" ] } ]

あり

あり

Null

UserId が Null

"UserID": [ null ]

あり

あり

数値 (等しい)

Price が 100

"Price": [ { "numeric": [ "=", 100 ] } ]

あり

あり

数値 (範囲)

Price が 10 より大きく 20 以下

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

あり

あり

または

PaymentType が「クレジット」または「デビット」の場合

"PaymentType": [ "Credit", "Debit"]

あり

あり

Or (複数フィールド)

Location が「New York」、または Day が「Monday」

"$or": [ { "Location": [ "New York" ] }, { "Day": [ "Monday" ] } ]

あり

あり

ワイルドカード

「dir」フォルダ内の .png 拡張子の付いたすべてのファイル

"FileName": [ { "wildcard": "dir/*.png" } ]

あり

なし

プレフィックスマッチング

イベントソース内の値のプレフィックスに応じてイベントをマッチングすることができます。文字列値にはプレフィックスマッチングを使用できます。

例えば、次のイベントパターンは、"time": "2017-10-02T18:43:48Z" のように "time" フィールドが "2017-10-02" で始まるすべてのイベントに一致します。

{ "time": [ { "prefix": "2017-10-02" } ] }

ケースを無視する際のプレフィックスマッチング

また、 と を併用して、値が始まる文字の大文字と小文字に関係なく、プレフィックス値を一致equals-ignore-caseさせることもできます。 prefix.

例えば、次のイベントパターンは、 serviceフィールドが文字列 で始まるイベントだけでなくEventBEVENTBeventb、またはそれらの文字の他の大文字と小文字でも一致します。

{ "detail": {"service" : [{ "prefix": { "equals-ignore-case": "EventB" }}]} }

サフィックスマッチング

イベントソース内の値のサフィックスに応じてイベントをマッチングすることができます。文字列値にはサフィックスマッチングを使用できます。

例えば、次のイベントパターンは、"FileName" フィールドが .png ファイル拡張子で終わるすべてのイベントに一致します。

{ "FileName": [ { "suffix": ".png" } ] }

ケースを無視する際のサフィックスマッチング

また、 と を併用して、値が終わる文字の大文字と小文字に関係なく、サフィックス値を一致equals-ignore-caseさせることもできます。 suffix.

例えば、次のイベントパターンは、 FileNameフィールドが文字列 で終わるイベントだけでなく.png、それらの文字の.PNG他の大文字と小文字でも一致します。

{ "detail": {"FileName" : [{ "suffix": { "equals-ignore-case": ".png" }}]} }

「以外」のマッチング

Anything-but マッチングは、ルールで指定されているもの以外のものと一致します。

文字列のみを含むリスト、または数字のみを含むリストを含む、文字列および数値で「以外」のマッチングを使用できます。

次のイベントパターンは、文字列と数字を使った「以外」のマッチングを示しています。

{ "detail": { "state": [ { "anything-but": "initializing" } ] } } { "detail": { "x-limit": [ { "anything-but": 123 } ] } }

次のイベントパターンは、文字列のリストを使った「以外」のマッチングを示しています。

{ "detail": { "state": [ { "anything-but": [ "stopped", "overloaded" ] } ] } }

次のイベントパターンは、数値のリストを使った「以外」のマッチングを示しています。

{ "detail": { "x-limit": [ { "anything-but": [ 100, 200, 300 ] } ] } }

大文字と小文字の区別なしの一致

equals-ignore-case を と組み合わせて使用してanything-but、文字の大文字と小文字に関係なく文字列値を一致させることもできます。

次のイベントパターンは、文字列「初期化」、「」、「初期化INITIALIZING」、またはそれらの文字のその他の大文字を含まないstateフィールドに一致します。

{ "detail": {"state" : [{ "anything-but": { "equals-ignore-case": "initializing" }}]} }

equals-ignore-caseと組み合わせて使用anything-butして、値のリストと照合することもできます。

{ "detail": {"state" : [{ "anything-but": { "equals-ignore-case": ["initializing", "stopped"] }}]} }

プレフィックスに対するモノのマッチング

prefixと組み合わせて使用するとanything-but、指定した値で始まらない文字列値を一致させることができます。これには、単一の値、または値のリストが含まれます。

次のイベントパターンは、 "init""state"フィールドに プレフィックスがないイベントと一致する、何でも一致しないマッチングを示しています。

{ "detail": { "state": [ { "anything-but": { "prefix": "init" } } ] } }

次のイベントパターンは、プレフィックス値のリストで使用されるモノ以外の一致を示しています。このイベントパターンは、 "state" フィールドに "init"または のプレフィックスがないイベントと一致し"stop"ます。

{ "detail": { "state" : [{ "anything-but": { "prefix": ["init", "stop"] } } ] } } }

サフィックスでのモノとマッチ

suffixと組み合わせて使用するとanything-but、指定した値で終了しない文字列値を一致させることができます。これには、単一の値、または値のリストが含まれます。

次のイベントパターンは、 で終わることのないFileNameフィールドの値と一致します.txt

{ "detail": { "FileName": [ { "anything-but": { "suffix": ".txt" } } ] } }

次のイベントパターンは、サフィックス値のリストで使用されるモノ以外の一致を示しています。このイベントパターンは、 .txtまたは で終わることのないFileNameフィールドの値と一致します.rtf

{ "detail": { "FileName": [ { "anything-but": { "suffix": [".txt", ".rtf"] } } ] } }

ワイルドカードを使用したモノとマッチング

anything-but マッチングに指定した値内でワイルドカード文字 (*) を使用できます。これには、単一の値、または値のリストが含まれます。

次のイベントパターンは、 を含まないFileNameフィールドの値と一致します/lib/

{ "detail": { "FilePath" : [{ "anything-but": { "wildcard": "*/lib/*" }}] } }

次のイベントパターンは、ワイルドカードを含む値のリストで使用される、何でも一致しないマッチングを示しています。このイベントパターンは、 /lib/または を含まないFileNameフィールドの値と一致します/bin/

{ "detail": { "FilePath" : [{ "anything-but": { "wildcard": ["*/lib/*", "*/bin/*"] }}] } }

詳細については、「ワイルドカードを使用したマッチング」を参照してください。

数値マッチング

数値マッチングは、JSON数値である値で機能します。精度が 15 桁 (小数点の右に 6 桁) の -5.0e9 から +5.0e9 までの値に制限されています。

以下は、すべてのフィールドが真であるイベントにのみ一致するイベントパターンの数値マッチングを示しています。

{ "detail": { "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ], "d-count": [ { "numeric": [ "<", 10 ] } ], "x-limit": [ { "numeric": [ "=", 3.018e2 ] } ] } }

IP アドレスマッチング

IPv4 および アドレスの IP IPv6 アドレスマッチングを使用できます。次のイベントパターンは、10.0.0 で始まり、0 ~ 255 の数値で終わる IP アドレスに一致する IP アドレスを示しています。

{ "detail": { "sourceIPAddress": [ { "cidr": "10.0.0.0/24" } ] } }

存在マッチング

存在する一致は、イベント内のフィールドの有無で機能JSONします。

存在マッチングは、リーフノードでのみ機能します。中間ノードでは機能しません。

次のイベントパターンは、detail.state フィールドを持つイベントと一致します。

{ "detail": { "state": [ { "exists": true } ] } }

前のイベントパターンは、次のイベントと一致します。

{ "version": "0", "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-abcd1111"], "detail": { "instance-id": "i-abcd1111", "state": "pending" } }

前述のイベントパターンは、 detail.stateフィールドがないため、次のイベントNOTと一致します。

{ "detail-type": [ "EC2 Instance State-change Notification" ], "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ], "detail": { "c-count" : { "c1" : 100 } } }

E quals-ignore-caseマッチング

E quals-ignore-caseマッチングは、大文字と小文字に関係なく文字列値に対して機能します。

次のイベントパターンは、大文字小文字に関係なく、指定された文字列と一致する detail-type フィールドを持つイベントと一致します。

{ "detail-type": [ { "equals-ignore-case": "ec2 instance state-change notification" } ] }

前のイベントパターンは、次のイベントと一致します。

{ "detail-type": [ "EC2 Instance State-change Notification" ], "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ], "detail": { "c-count" : { "c1" : 100 } } }

ワイルドカードを使用したマッチング

ワイルドカード文字 (*) を使用してイベントパターン内の文字列値と一致させることができます。

注記

現在、ワイルドカード文字はイベントバスルールでのみサポートされています。

イベントパターンでワイルドカードを使用する場合の考慮事項:

  • 1 つの文字列値にはワイルドカード文字をいくつでも指定できますが、ワイルドカード文字を連続して使用することはサポートされていません。

  • EventBridge では、バックスラッシュ文字 (\) を使用してワイルドカードフィルターでリテラル * および \ 文字を指定できます。

    • 文字列 \* はリテラル * 文字を表します。

    • 文字列 \\ はリテラル \ 文字を表します。

    バックスラッシュを使用して他の文字をエスケープすることはサポートされていません。

ワイルドカードとイベントパターンの複雑さ

ワイルドカードを使用するルールの複雑さには制限があります。ルールが複雑すぎる場合、 はルールの作成InvalidEventPatternException時に EventBridge を返します。ルールでこのようなエラーが発生した場合は、以下のガイダンスを参考にしてイベントパターンの複雑さを軽減することを検討してください。

  • 使用するワイルドカード文字の数を減らす

    ワイルドカード文字は、複数の可能な値と一致させることが本当に必要な場合にのみ使用します。例えば、次のイベントパターンで、同じリージョン内のイベントバスと一致させる場合を考えてみます。

    { "EventBusArn": [ { "wildcard": "*:*:*:*:*:event-bus/*" } ] }

    上記の場合、 のセクションの多くはARN、イベントバスが存在するリージョンに直接基づいています。したがって、us-east-1 リージョンを使用している場合は、次の例のように、複雑さを減らしたパターンでも必要な値と一致します。

    { "EventBusArn": [ { "wildcard": "arn:aws:events:us-east-1:*:event-bus/*" } ] }
  • ワイルドカード文字の後に繰り返される文字シーケンスを減らす

    ワイルドカードを使用した後に同じ文字シーケンスが複数回出現すると、イベントパターンの処理が複雑になります。イベントパターンを再キャストして、繰り返されるシーケンスを最小限に抑えます。次の例で、任意のユーザーのファイルのファイル名 doc.txt と一致させる場合を考えてみます。

    { "FileName": [ { "wildcard": "/Users/*/dir/dir/dir/dir/dir/doc.txt" } ] }

    doc.txt ファイルが、指定したパスにのみ存在することがわかっている場合は、繰り返される文字シーケンスを次の方法で減らすことができます。

    { "FileName": [ { "wildcard": "/Users/*/doc.txt" } ] }

複数のマッチングを含む複雑な例

複数の一致基準をより複雑なイベントパターンに組み合わせることができます。例えば、次のイベントパターンでは、anything-butnumeric を組み合わせています。

{ "time": [ { "prefix": "2017-10-02" } ], "detail": { "state": [ { "anything-but": "initializing" } ], "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ], "d-count": [ { "numeric": [ "<", 10 ] } ], "x-limit": [ { "anything-but": [ 100, 200, 300 ] } ] } }
注記

イベントパターンを構築するときに、キーを複数回含めると、最後のリファレンスがイベントの評価に使用されるものになります。たとえば、次のパターンの場合:

{ "detail": { "location": [ { "prefix": "us-" } ], "location": [ { "anything-but": "us-east" } ] } }

{ "anything-but": "us-east" } のみが location を評価する際に考慮されます。

複数の $or マッチングを含む複雑な例

また、複数のフィールドにわたって任意のフィールド値が一致するかどうかを確認する複雑なイベントパターンを作成することもできます。$or を使用して、複数のフィールドの値のいずれかが一致した場合に一致するイベントパターンを作成します。

$or コンストラクト内の個々のフィールドのパターンマッチングには、数値マッチング配列など、他のフィルタータイプを含めることができますので注意してください。

次のいずれかの条件が満たされる場合、次のイベントパターンと一致します。

  • c-count フィールドが 0 より大きい、または 5 以下。

  • d-count フィールドが 10 未満。

  • x-limit フィールドが 3.018e2 に等しい。

{ "detail": { "$or": [ { "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ] }, { "d-count": [ { "numeric": [ "<", 10 ] } ] }, { "x-limit": [ { "numeric": [ "=", 3.018e2 ] } ] } ] } }
注記

APIs イベントパターン (PutRule、、CreateArchive、 などTestEventPattern) を受け入れる はUpdateArchive、 の使用$orによって 1000 を超えるルールの組み合わせInvalidEventPatternExceptionが発生すると、 をスローします。

イベントパターン内のルールの組み合わせの数を決定するには、イベントパターン内の各 $or 配列の引数の合計数を掛けます。たとえば、上記のパターンには 3 つの引数を持つ単一の $or 配列が含まれているため、ルールの組み合わせの総数も 3 つになります。2 つの引数を持つ別の $or 配列を追加した場合、ルールの組み合わせの合計は 6 つになります。