Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Vergleichsoperatoren zur Verwendung in Ereignismustern in Amazon EventBridge
Nachfolgend finden Sie eine Zusammenfassung aller Vergleichsoperatoren, die in EventBridge verfügbar sind.
Vergleichsoperatoren funktionieren nur in Blattknoten, mit Ausnahme von $or
und anything-but
.
Vergleich | Beispiel | Regelsyntax | Unterstützung für Event-Busse | Unterstützung für Rohre |
---|---|---|---|---|
And |
Location is "New York" and Day is "Monday" |
|
Ja |
Ja |
Alles außer | State ist ein beliebiger Wert außer „initialisieren“. |
|
Ja |
Ja |
Alles andere als (beginnt mit) | Die Region liegt nicht in den USA. |
|
Ja |
Nein |
Alles außer (endet mit) | FileName endet nicht mit der Erweiterung.png. |
|
Ja |
Nein |
Alles außer (Groß- und Kleinschreibung ignorieren) | State ist ein beliebiger Wert außer „initialisieren“ oder einer anderen Variante der Groß- und Kleinschreibung, z. B. "“. INITIALIZING |
|
Ja |
Nein |
Alles, außer mit einem Platzhalter | FileName ist kein Dateipfad, der Folgendes beinhaltet. |
|
Ja |
Nein |
Die Region befindet sich in den USA. |
|
Ja |
Ja |
|
Beginnt mit (Groß- und Kleinschreibung ignorieren) | Der Dienstname beginnt mit den Buchstaben „eventb“, unabhängig von der Groß- und Kleinschreibung. |
|
Ja |
Ja |
LastName ist leer. |
|
Ja |
Ja |
|
Gleichheitszeichen |
Name is "Alice" |
|
Ja |
Ja |
Name is "Alice" |
|
Ja |
Ja |
|
FileName endet mit der Erweiterung.png |
|
Ja |
Ja |
|
Endet mit (Groß- und Kleinschreibung ignorieren) | Der Dienstname endet mit den Buchstaben „tbridge“ oder einer anderen Variante der Groß-/Kleinschreibung, z. B. "TBRIDGE“. |
|
Ja |
Ja |
ProductName existiert |
|
Ja |
Ja |
|
ProductName existiert nicht |
|
Ja |
Ja |
|
Weather is anything but "Raining" |
|
Ja |
Ja |
|
UserID is null |
|
Ja |
Ja |
|
Price is 100 |
|
Ja |
Ja |
|
Price is more than 10, and less than or equal to 20 |
|
Ja |
Ja |
|
Oder |
PaymentType ist „Kredit“ oder „Lastschrift“ |
|
Ja |
Ja |
Location is "New York", or Day is "Monday". |
|
Ja |
Ja |
|
Jede Datei mit der Erweiterung .png, die sich im Ordner „dir“ befindet |
|
Ja |
Nein |
Übereinstimmung mit einem Präfix
Sie können ein Ereignis abhängig vom Präfix eines Werts in der Ereignisquelle abgleichen. Sie können den Präfix-Abgleich für Zeichenfolgenwerte verwenden.
Beispielsweise würde das folgende Ereignismuster mit jedem Ereignis übereinstimmen, bei dem das Feld "time"
mit "2017-10-02"
wie "time": "2017-10-02T18:43:48Z"
beginnt.
{
"time": [ { "prefix": "2017-10-02" } ]
}
Präfixabgleich ohne Berücksichtigung der Groß- und Kleinschreibung
Sie können einen Präfixwert auch unabhängig von der Groß- und Kleinschreibung der Zeichen, mit denen ein Wert beginnt, abgleichen, indem Sie ihn equals-ignore-case
in Verbindung mit verwenden prefix.
Das folgende Ereignismuster würde beispielsweise auf jedes Ereignis zutreffen, bei dem das service
Feld mit der Zeichenfolge begannEventB
, aber auch EVENTB
auf jede andere Groß-/Kleinschreibung dieser Zeichen. eventb
{
"detail": {"service" : [{ "prefix": { "equals-ignore-case": "EventB" }}]}
}
Suffix-Abgleich
Sie können ein Ereignis abhängig vom Suffix eines Werts in der Ereignisquelle abgleichen. Sie können den Suffix-Abgleich für Zeichenfolgenwerte verwenden.
Beispielsweise würde das folgende Ereignismuster mit jedem Ereignis übereinstimmen, bei dem das Feld "FileName"
mit der Dateierweiterung .png
endet.
{
"FileName": [ { "suffix": ".png" } ]
}
Suffixabgleich ohne Berücksichtigung der Groß- und Kleinschreibung
Sie können einen Suffixwert auch unabhängig von der Groß- und Kleinschreibung der Zeichen, mit denen ein Wert endet, abgleichen, indem Sie ihn in Verbindung mit verwenden equals-ignore-case
suffix.
Das folgende Ereignismuster würde beispielsweise jedem Ereignis entsprechen, bei dem das FileName
Feld mit der Zeichenfolge endet.png
, aber auch .PNG
mit jeder anderen Groß-/Kleinschreibung dieser Zeichen.
{
"detail": {"FileName" : [{ "suffix": { "equals-ignore-case": ".png" }}]}
}
„Alles außer“-Abgleich
Alles andere als übereinstimmend entspricht allem, außer dem, was in der Regel angegeben ist.
Sie können den „Alles andere als“-Abgleich mit Zeichenfolgen und numerischen Werten verwenden, einschließlich Listen, die nur Zeichenfolgen oder nur Zahlen enthalten.
Im Folgenden Ereignismuster ist ein „Alles andere als“-Abgleich mit Zeichenfolgen und Zahlen dargestellt.
{
"detail": {
"state": [ { "anything-but": "initializing" } ]
}
}
{
"detail": {
"x-limit": [ { "anything-but": 123 } ]
}
}
Im Folgenden Ereignismuster ist ein „Alles andere als“-Abgleich mit einer Liste von Zeichenfolgen dargestellt.
{
"detail": {
"state": [ { "anything-but": [ "stopped", "overloaded" ] } ]
}
}
Im Folgenden Ereignismuster ist ein „Alles andere als“-Abgleich mit einer Liste von Zahlen dargestellt.
{
"detail": {
"x-limit": [ { "anything-but": [ 100, 200, 300 ] } ]
}
}
Alles andere als übereinstimmend, wobei die Groß- und Kleinschreibung ignoriert wird
Sie können es auch zusammen mit verwenden equals-ignore-case
anything-but
, um Zeichenkettenwerte unabhängig von der Groß- und Kleinschreibung abzugleichen.
Das folgende Ereignismuster entspricht state
Feldern, die nicht die Zeichenfolge „initializing“, "„, INITIALIZING „Initializing“ oder eine andere Groß- und Kleinschreibung dieser Zeichen enthalten.
{
"detail": {"state" : [{ "anything-but": { "equals-ignore-case": "initializing" }}]}
}
Sie können es auch equals-ignore-case
in Verbindung mit verwendenanything-but
, um einen Abgleich mit einer Werteliste vorzunehmen:
{
"detail": {"state" : [{ "anything-but": { "equals-ignore-case": ["initializing", "stopped"] }}]}
}
Alles andere als übereinstimmende Präfixe
Sie können es prefix
in Verbindung mit verwendenanything-but
, um Zeichenkettenwerte abzugleichen, die nicht mit dem angegebenen Wert beginnen. Dazu gehören Einzelwerte oder eine Liste von Werten.
Das folgende Ereignismuster zeigt alles andere als eine Übereinstimmung, die mit jedem Ereignis übereinstimmt, für das das Präfix nicht "init"
im Feld steht. "state"
{
"detail": {
"state": [ { "anything-but": { "prefix": "init" } } ]
}
}
Das folgende Ereignismuster zeigt, dass alles andere als eine Übereinstimmung mit einer Liste von Präfixwerten verwendet wird. Dieses Ereignismuster entspricht jedem Ereignis, das weder das Präfix noch das Feld "init"
enthält. "stop"
"state"
{
"detail": {
"state" : [{ "anything-but": { "prefix": ["init", "stop"] } } ] }
}
}
Alles andere als übereinstimmende Suffixe
Sie können es suffix
in Verbindung mit verwendenanything-but
, um Zeichenkettenwerte abzugleichen, die nicht mit dem angegebenen Wert enden. Dazu gehören Einzelwerte oder eine Liste von Werten.
Das folgende Ereignismuster entspricht allen Werten für das FileName
Feld, die nicht mit enden.txt
.
{
"detail": {
"FileName": [ { "anything-but": { "suffix": ".txt" } } ]
}
}
Das folgende Ereignismuster zeigt, dass alles andere als eine Übereinstimmung mit einer Liste von Suffixwerten verwendet wird. Dieses Ereignismuster entspricht allen Werten für das FileName
Feld, die nicht mit einem oder enden. .txt
.rtf
{
"detail": {
"FileName": [ { "anything-but": { "suffix": [".txt", ".rtf"] } } ]
}
}
Alles andere als ein Abgleich mithilfe von Platzhaltern
Sie können das Platzhalterzeichen (*) in den von Ihnen angegebenen Werten für alles andere als für einen Abgleich verwenden. Dazu gehören Einzelwerte oder eine Liste von Werten.
Das folgende Ereignismuster entspricht allen Werten für das FileName
Feld, die nicht enthalten/lib/
.
{
"detail": {
"FilePath" : [{ "anything-but": { "wildcard": "*/lib/*" }}]
}
}
Das folgende Ereignismuster zeigt alles andere als übereinstimmende Werte mit einer Liste von Werten, einschließlich Platzhaltern. Dieses Ereignismuster entspricht allen Werten für das FileName
Feld, die weder oder enthalten. /lib/
/bin/
{
"detail": {
"FilePath" : [{ "anything-but": { "wildcard": ["*/lib/*", "*/bin/*"] }}]
}
}
Weitere Informationen finden Sie unter Abgleich mithilfe von Platzhaltern.
Numerischer Abgleich
Der numerische Abgleich funktioniert mit Werten, die JSON Zahlen sind. Sie ist beschränkt auf Werte von -5.0e9 bis einschließlich +5.0e9, auf 15 Stellen genau oder sechs Stellen rechts vom Dezimalzeichen.
Im Folgenden wird der numerische Abgleich für ein Ereignismuster gezeigt, das nur Ereignissen entspricht, die für alle Felder zutreffend sind.
{
"detail": {
"c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ],
"d-count": [ { "numeric": [ "<", 10 ] } ],
"x-limit": [ { "numeric": [ "=", 3.018e2 ] } ]
}
}
Abgleich von IP-Adressen
Sie können den IP-Adressabgleich für IPv4 und IPv6 Adressen verwenden. Das folgende Ereignismuster zeigt den Abgleich der IP-Adressen, die mit 10.0.0 beginnen und mit einer Zahl zwischen 0 und 255 enden.
{
"detail": {
"sourceIPAddress": [ { "cidr": "10.0.0.0/24" } ]
}
}
„Vorhanden“-Abgleich
Der Exist-Abgleich funktioniert beim Vorhandensein oder Fehlen eines Felds im Feld JSON des Ereignisses.
Der „Vorhanden“-Abgleich funktioniert nur auf Blattknoten. Auf Zwischenknoten funktioniert sie nicht.
Das folgende Ereignismuster entspricht jedem Ereignis, das über ein detail.state
-Feld verfügt.
{
"detail": {
"state": [ { "exists": true } ]
}
}
Das vorhergehende Ereignismuster stimmt mit dem folgenden Ereignis überein.
{
"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"
}
}
Das vorhergehende Ereignismuster NOT entspricht dem folgenden Ereignis, da es kein detail.state
Feld enthält.
{
"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 entspricht
Der quals-ignore-caseE-Abgleich funktioniert bei Zeichenkettenwerten unabhängig von der Groß- und Kleinschreibung.
Das folgende Ereignismuster entspricht jedem Ereignis, dessen detail-type
-Feld der angegebenen Zeichenfolge entspricht, unabhängig von der Groß- und Kleinschreibung.
{
"detail-type": [ { "equals-ignore-case": "ec2 instance state-change notification" } ]
}
Das vorhergehende Ereignismuster stimmt mit dem folgenden Ereignis überein.
{
"detail-type": [ "EC2 Instance State-change Notification" ],
"resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ],
"detail": {
"c-count" : {
"c1" : 100
}
}
}
Abgleich mithilfe von Platzhaltern
Sie können das Platzhalterzeichen (*) verwenden, um Zeichenfolgenwerte in Ereignismustern abzugleichen.
Anmerkung
Derzeit wird das Platzhalterzeichen nur in Event-Bus-Regeln unterstützt.
Überlegungen zur Verwendung von Platzhaltern in Ihren Ereignismustern:
-
Sie können eine beliebige Anzahl von Platzhalterzeichen in einem bestimmten Zeichenfolgenwert angeben. Aufeinanderfolgende Platzhalterzeichen werden jedoch nicht unterstützt.
-
EventBridge unterstützt die Verwendung des Backslash-Zeichens (\) zur Angabe der Literalzeichen * und\ in Platzhalterfiltern:
-
Die Zeichenfolge
\*
steht für das Literalzeichen * -
Die Zeichenfolge
\\
steht für das Literalzeichen \
Die Verwendung des umgekehrten Schrägstrichs, um andere Zeichen durch ein Escape-Zeichen zu schützen, wird nicht unterstützt.
-
Platzhalter und Komplexität von Ereignismustern
Es gibt eine Grenze, wie komplex eine Regel sein kann, die Platzhalter verwendet. Wenn eine Regel zu komplex ist, wird InvalidEventPatternException
beim Versuch, die Regel zu erstellen, ein EventBridge zurückgegeben. Wenn Ihre Regel einen solchen Fehler generiert, sollten Sie die folgenden Anleitungen verwenden, um die Komplexität des Ereignismusters zu reduzieren:
-
Reduzieren der Anzahl der verwendeten Platzhalterzeichen
Verwenden Sie Platzhalterzeichen nur dann, wenn Sie tatsächlich einen Abgleich mit mehreren möglichen Werten durchführen müssen. Stellen Sie sich zum Beispiel das folgende Ereignismuster vor, bei dem Sie einen Abgleich mit Event Buses in derselben Region durchführen möchten:
{ "EventBusArn": [ { "wildcard": "*:*:*:*:*:event-bus/*" } ] }
Im obigen Fall hängen viele der Abschnitte direkt von der Region ARN ab, in der sich Ihre Veranstaltungsbusse befinden. Wenn Sie also die Region
us-east-1
verwenden, könnte das folgende Beispiel ein weniger komplexes Muster sein, das immer noch den gewünschten Werten entspricht:{ "EventBusArn": [ { "wildcard": "arn:aws:events:us-east-1:*:event-bus/*" } ] }
-
Reduzieren sich wiederholender Zeichenfolgen, die nach einem Platzhalterzeichen vorkommen
Wenn dieselbe Zeichenfolge nach der Verwendung eines Platzhalters mehrfach vorkommt, erhöht sich die Komplexität der Verarbeitung des Ereignismusters. Formulieren Sie Ihr Ereignismuster neu, um wiederholte Sequenzen zu minimieren. Betrachten Sie beispielsweise das folgende Beispiel, das mit der
doc.txt
-Dateinamendatei für jeden Benutzer übereinstimmt:{ "FileName": [ { "wildcard": "/Users/*/dir/dir/dir/dir/dir/doc.txt" } ] }
Wenn Sie wüssten, dass die Datei
doc.txt
nur im angegebenen Pfad vorkommt, könnten Sie die wiederholte Zeichenfolge auf diese Weise reduzieren:{ "FileName": [ { "wildcard": "/Users/*/doc.txt" } ] }
Komplexes Beispiel mit mehrfachem Abgleich
Sie können mehrere Übereinstimmungskriterien zu einem komplexeren Ereignismuster kombinieren. Das folgende Ereignismuster kombiniert beispielsweise anything-but
und numeric
.
{
"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 ] } ]
}
}
Anmerkung
Wenn Sie beim Erstellen von Ereignismustern einen Schlüssel mehrfach angeben, wird die letzte Referenz zur Auswertung von Ereignissen verwendet. Zum Beispiel für das folgende Muster:
{ "detail": { "location": [ { "prefix": "us-" } ], "location": [ { "anything-but": "us-east" } ] } }
Wird bei der Auswertung des location
nur { "anything-but": "us-east" }
berücksichtigt
Komplexes Beispiel mit $or
-Abgleich
Sie können auch komplexe Ereignismuster erstellen, mit denen überprüft wird, ob beliebige Feldwerte in mehreren Feldern übereinstimmen. Verwenden Sie $or
, um ein Ereignismuster zu erstellen, das überprüft, ob beliebige Werte für mehrere Felder übereinstimmen.
Beachten Sie, dass Sie andere Filtertypen, wie z. B. den numerischen Abgleich und Arrays, in den Musterabgleich für einzelne Felder in Ihrem $or
-Konstrukt einbeziehen können.
Das folgende Ereignismuster stimmt überein, wenn eine der folgenden Bedingungen erfüllt ist:
-
Das Feld
c-count
ist größer als 0 oder kleiner als oder gleich 5. -
Das Feld
d-count
ist kleiner als 10. -
Das Feld
x-limit
entspricht 3.018e2.
{
"detail": {
"$or": [
{ "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ] },
{ "d-count": [ { "numeric": [ "<", 10 ] } ] },
{ "x-limit": [ { "numeric": [ "=", 3.018e2 ] } ] }
]
}
}
Anmerkung
APIsdie ein Ereignismuster (wiePutRule
,, undTestEventPattern
) akzeptieren CreateArchive
UpdateArchive
, lösen eine Meldung aus, InvalidEventPatternException
wenn die Verwendung von mehr als 1000 Regelkombinationen $or
ergibt.
Wenn Sie die Anzahl der Regelkombinationen in einem Ereignismuster ermitteln möchten, multiplizieren Sie die Gesamtzahl der Argumente aus jedem $or
-Array im Ereignismuster. Das obige Muster enthält beispielsweise ein einzelnes $or
-Array mit drei Argumenten, sodass die Gesamtzahl der Regelkombinationen ebenfalls drei beträgt. Wenn Sie ein weiteres $or
-Array mit zwei Argumenten hinzufügen würden, wäre die Gesamtzahl der Regelkombinationen dann sechs.