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.
AND/OR-Logik
Sie können Operationen verwenden, die die AND /OR-Logik beinhalten, um Nachrichtenattribute oder Eigenschaften des Nachrichtentexts abzugleichen.
ANDLogik
Sie können AND Logik mithilfe mehrerer Eigenschaftsnamen anwenden.
Betrachten Sie folgende Richtlinie:
{
"customer_interests": ["rugby"],
"price_usd": [{"numeric": [">", 100]}]
}
Sie gleicht alle Nachrichtenattribute oder die Eigenschaft des Nachrichtentexts ab, bei denen der Wert customer_interests
auf rugby
und der Wert price_usd
auf eine Zahl größer als 100 festgelegt ist.
Anmerkung
Sie können AND Logik nicht auf Werte desselben Attributs anwenden.
ODER-Logik
Sie können die ODER-Logik durch die Zuweisung mehrerer Werte zu einem Attributnamen anwenden.
Betrachten Sie folgende Richtlinie:
{
"customer_interests": ["rugby", "football", "baseball"]
}
Sie gleicht alle Nachrichtenattribute ab, deren customer_interests
-Wert auf rugby
, football
, oder baseball
festgelegt ist.
OR-Operator
Sie können den "$or"
-Operator verwenden, um explizit eine Filterrichtlinie zu definieren, um die OR-Beziehung zwischen mehreren Attributen in der Richtlinie auszudrücken.
Amazon erkennt eine "$or"
Beziehung SNS nur an, wenn die Richtlinie alle der folgenden Bedingungen erfüllt hat. Wenn all diese Bedingungen nicht erfüllt sind, wird "$or"
wie ein regulärer Attributname behandelt, genauso wie jede andere Zeichenfolge in der Richtlinie.
-
Die Regel enthält beispielsweise ein
"$or"
-Feldattribut, gefolgt von einem Array, z. B.“$or” : []
. -
Das
"$or"
-Array enthält mindestens 2 Objekte:"$or": [{}, {}]
. -
Keines der Objekte im
"$or"
-Array hat Feldnamen, bei denen es sich um reservierte Schlüsselwörter handelt.
Andernfalls wird "$or"
wie ein normaler Attributname behandelt, genau wie andere Zeichenfolgen in der Richtlinie.
Die folgende Richtlinie wird nicht als OR-Beziehung analysiert, da Zahl und Präfix reservierte Schlüsselwörter sind.
{
"$or": [ {"numeric" : 123}, {"prefix": "abc"} ]
}
Beispiele für OR
-Operatoren
Standard OR
:
{
"source": [ "aws.cloudwatch" ],
"$or": [
{ "metricName": [ "CPUUtilization" ] },
{ "namespace": [ "AWS/EC2" ] }
]
}
Die Filterlogik für diese Richtlinie lautet:
"source" && ("metricName" || "namespace")
Sie stimmt mit einem der beiden folgenden Nachrichtenattributsätze überein:
"source": {"Type": "String", "Value": "aws.cloudwatch"},
"metricName": {"Type": "String", "Value": "CPUUtilization"}
or
"source": {"Type": "String", "Value": "aws.cloudwatch"},
"namespace": {"Type": "String", "Value": "AWS/EC2"}
Sie stimmt auch mit einem der beiden folgenden Nachrichtentexte überein:
{
"source": "aws.cloudwatch",
"metricName": "CPUUtilization"
}
or
{
"source": "aws.cloudwatch",
"namespace": "AWS/EC2"
}
Richtlinieneinschränkungen, zu denen auch OR
-Beziehungen gehören
Betrachten Sie folgende Richtlinie:
{
"source": [ "aws.cloudwatch" ],
"$or": [
{ "metricName": [ "CPUUtilization", "ReadLatency" ] },
{
"metricType": [ "MetricType" ] ,
"$or" : [
{ "metricId": [ 1234, 4321 ] },
{ "spaceId": [ 1000, 2000, 3000 ] }
]
}
]
}
Die Logik dieser Richtlinie kann auch wie folgt vereinfacht werden:
("source" AND "metricName")
OR
("source" AND "metricType" AND "metricId")
OR
("source" AND "metricType" AND "spaceId")
Die Komplexitätsberechnung für Richtlinien mit OR-Beziehungen kann vereinfacht werden, indem die Summe der Kombinationskomplexitäten für jede OR-Anweisung berechnet wird.
Die Gesamtkombination wird wie folgt berechnet:
(source * metricName) + (source * metricType * metricId) + (source * metricType * spaceId)
= (1 * 2) + (1 * 1 * 2) + (1 * 1 * 3)
= 7
source
hat einen Wert, metricName
hat zwei Werte, metricType
hat einen Wert, metricId
hat zwei Werte und spaceId
hat drei Werte.
Beachten Sie die folgende Richtlinie für verschachtelte Filter:
{
"$or": [
{ "metricName": [ "CPUUtilization", "ReadLatency" ] },
{ "namespace": [ "AWS/EC2", "AWS/ES" ] }
],
"detail" : {
"scope" : [ "Service" ],
"$or": [
{ "source": [ "aws.cloudwatch" ] },
{ "type": [ "CloudWatch Alarm State Change"] }
]
}
}
Die Logik dieser Richtlinie kann wie folgt vereinfacht werden:
("metricName" AND ("detail"."scope" AND "detail"."source")
OR
("metricName" AND ("detail"."scope" AND "detail"."type")
OR
("namespace" AND ("detail"."scope" AND "detail"."source")
OR
("namespace" AND ("detail"."scope" AND "detail"."type")
Die Berechnung der Gesamtkombinationen ist bei nicht verschachtelten Richtlinien gleich, außer dass wir die Verschachtelungsebene des Schlüssels berücksichtigen müssen.
Die Gesamtkombination wird wie folgt berechnet:
(2 * 2 * 2) + (2 * 2 * 2) + (2 * 2 * 2) + (2 * 2 * 2) = 32
metricName
hat zwei Werte, namespace
hat zwei Werte, scope
ist ein zweistufiger verschachtelter Schlüssel mit einem Wert, source
ist ein zweistufiger verschachtelter Schlüssel mit einem Wert und type
ist ein zweistufiger verschachtelter Schlüssel mit einem Wert.