Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Operadores de comparación para su uso en patrones de eventos en Amazon EventBridge
A continuación, se muestra un resumen de todos los operadores de comparación disponibles en EventBridge.
Los operadores de comparación solo funcionan en los nodos secundarios, con la excepción de $or
y anything-but
.
Comparación | Ejemplo | Sintaxis de reglas | Soporte para buses de eventos | Soporte para canalizaciones |
---|---|---|---|---|
Y |
El valor de Location (Ubicación) es “New York” y el de Day (Día) es “Monday” |
|
Sí |
Sí |
Anything-but | El valor de Estado es cualquier valor que no sea “inicializando”. |
|
Sí |
Sí |
Anything-but (comienza por) | El valor de Región no se encuentra en EE. UU. |
|
Sí |
No |
Anything-but (termina con) | El valor de FileName no termina con la extensión .png. |
|
Sí |
No |
Anything-but (omitir mayúsculas y minúsculas) | El estado es cualquier valor que no sea “inicializando” o cualquier otra variación entre mayúsculas y minúsculas, como “INICIALIZANDO”. |
|
Sí |
No |
Anything-but con un carácter comodín | El valor de FileName no es una ruta de archivo que incluya |
|
Sí |
No |
El valor de Región se encuentra en EE. UU. |
|
Sí |
Sí |
|
Comienza por (omitir mayúsculas y minúsculas) | El nombre del servicio comienza por las letras “eventb”, independientemente del uso de las mayúsculas y minúsculas. |
|
Sí |
Sí |
El valor de LastName está vacío. |
|
Sí |
Sí |
|
Igual a |
El valor de Name (Nombre) es “Alice” |
|
Sí |
Sí |
El valor de Name (Nombre) es “Alice” |
|
Sí |
Sí |
|
FileName termina con la extensión .png |
|
Sí |
Sí |
|
Termina con (omitir mayúsculas y minúsculas) | El nombre del servicio termina con las letras “tbridge” o cualquier otra variante de mayúsculas y minúsculas, como “TBRIDGE”. |
|
Sí |
Sí |
ProductName (Nombre de producto) existe |
|
Sí |
Sí |
|
El valor de ProductName (Nombre de producto) no existe |
|
Sí |
Sí |
|
El valor de Weather (Tiempo) es cualquier valor menos “Raining” (Lluvia) |
|
Sí |
Sí |
|
El valor de UserID (ID de usuario) es nulo |
|
Sí |
Sí |
|
El valor de Price (Precio) es 100 |
|
Sí |
Sí |
|
El valor de Price (Precio) es superior a 10 e inferior o igual a 20 |
|
Sí |
Sí |
|
Or (Disyunción) |
El valor de PaymentType (Tipo de pago) es “Credit” (Crédito) o “Debit” (Débito) |
|
Sí |
Sí |
El valor de Location (Ubicación) es “New York” o el de Day (Día) es “Monday”. |
|
Sí |
Sí |
|
Cualquier archivo con la extensión.png, ubicado dentro de la carpeta "dir" |
|
Sí |
No |
Coincidencia de prefijos
Puede hacer coincidir un evento dependiendo del prefijo de un valor en el origen del evento. Puede utilizar la coincidencia de prefijos para los valores de cadena.
Por ejemplo, el siguiente patrón de eventos coincidiría con cualquier evento en el que el campo "time"
comenzara con "2017-10-02"
como "time": "2017-10-02T18:43:48Z"
.
{
"time": [ { "prefix": "2017-10-02" } ]
}
El prefijo coincide y omite mayúsculas y minúsculas
También puede hacer coincidir el valor de un prefijo independientemente de las mayúsculas y minúsculas de los caracteres por los que comience un valor, utilizando equals-ignore-case
junto con prefix.
Por ejemplo, el siguiente patrón de eventos coincidiría con cualquier evento en el que el campo service
comenzara por la cadena de caracteres EventB
, pero también coincidiría con EVENTB
, eventb
o cualquier otra combinación de mayúsculas y minúsculas de esos caracteres.
{
"detail": {"service" : [{ "prefix": { "equals-ignore-case": "EventB" }}]}
}
Coincidencia de sufijos
Puede hacer coincidir un evento dependiendo del sufijo de un valor en el origen del evento. Puede utilizar la coincidencia de sufijos para los valores de cadena.
Por ejemplo, el siguiente patrón de eventos coincidiría con cualquier evento en el que el campo "FileName"
terminara con la extensión de archivo .png
.
{
"FileName": [ { "suffix": ".png" } ]
}
El sufijo coincide y omite mayúsculas y minúsculas
También puede hacer coincidir el valor de un sufijo independientemente de las mayúsculas y minúsculas de los caracteres con los que termine un valor, utilizando equals-ignore-case
junto con suffix.
Por ejemplo, el siguiente patrón de eventos coincidiría con cualquier evento en el que el campo FileName
terminara con la cadena de caracteres .png
, pero también .PNG
o cualquier otra combinación de mayúsculas y minúsculas de esos caracteres.
{
"detail": {"FileName" : [{ "suffix": { "equals-ignore-case": ".png" }}]}
}
Coincidencia "anything-but"
La coincidencia anything-but coincide con cualquier cosa excepto lo que se proporciona en la regla.
Puede utilizar la coincidencia anything-but con cadenas y valores numéricos, incluidas listas que contienen solo cadenas o solo números.
El siguiente patrón de eventos muestra la coincidencia anything-but con cadenas y números.
{
"detail": {
"state": [ { "anything-but": "initializing" } ]
}
}
{
"detail": {
"x-limit": [ { "anything-but": 123 } ]
}
}
El siguiente patrón de eventos muestra la coincidencia anything-but con una lista de cadenas.
{
"detail": {
"state": [ { "anything-but": [ "stopped", "overloaded" ] } ]
}
}
El siguiente patrón de eventos muestra la coincidencia anything-but con una lista de números.
{
"detail": {
"x-limit": [ { "anything-but": [ 100, 200, 300 ] } ]
}
}
Coincidencia anything-but y omite mayúsculas y minúsculas
También se puede utilizar equals-ignore-case
junto con anything-but
para hacer coincidir los valores de las cadenas independientemente de las mayúsculas y minúsculas de los caracteres.
El siguiente patrón de eventos coincide con los campos state
que no contienen la cadena “inicializando”, “INICIALIZANDO”, “Inicializando” o cualquier otra combinación de mayúsculas y minúsculas de esos caracteres.
{
"detail": {"state" : [{ "anything-but": { "equals-ignore-case": "initializing" }}]}
}
También puede usar equals-ignore-case
junto con anything-but
para compararlo con una lista de valores:
{
"detail": {"state" : [{ "anything-but": { "equals-ignore-case": ["initializing", "stopped"] }}]}
}
Coincidencia anything-but en prefijos
Puede usar prefix
junto con anything-but
para hacer coincidir valores de cadena que no comiencen por el valor especificado. Esto incluye valores únicos o una lista de valores.
El siguiente patrón de eventos muestra la coincidencia anything-but que coincide con cualquier evento que no tenga el prefijo "init"
en el campo "state"
.
{
"detail": {
"state": [ { "anything-but": { "prefix": "init" } } ]
}
}
El siguiente patrón de eventos muestra la coincidencia anything-but con una lista de valores de prefijos. Este patrón de eventos coincide con cualquier evento que no tenga el prefijo "init"
ni "stop"
en el campo "state"
.
{
"detail": {
"state" : [{ "anything-but": { "prefix": ["init", "stop"] } } ] }
}
}
Coincidencia anything-but en sufijos
Puede usar suffix
junto con anything-but
para hacer coincidir valores de cadena que no terminen con el valor especificado. Esto incluye valores únicos o una lista de valores.
El siguiente patrón de eventos coincide con cualquier valor del campo FileName
que no termine con .txt
.
{
"detail": {
"FileName": [ { "anything-but": { "suffix": ".txt" } } ]
}
}
El siguiente patrón de eventos muestra la coincidencia anything-but con una lista de valores de sufijos. Este patrón de eventos coincide con cualquier valor del campo FileName
que no termine con .txt
o .rtf
.
{
"detail": {
"FileName": [ { "anything-but": { "suffix": [".txt", ".rtf"] } } ]
}
}
Coincidencia anything-but con caracteres comodín
Puede utilizar el carácter comodín (*) en los valores que especifique para la coincidencia anything-but. Esto incluye valores únicos o una lista de valores.
El siguiente patrón de eventos coincide con cualquier valor del campo FileName
que no contenga /lib/
.
{
"detail": {
"FilePath" : [{ "anything-but": { "wildcard": "*/lib/*" }}]
}
}
El siguiente patrón de eventos muestra la coincidencia anything-but con una lista de valores que incluye caracteres comodín. Este patrón de eventos coincide con cualquier valor del campo FileName
que no contenga /lib/
o /bin/
.
{
"detail": {
"FilePath" : [{ "anything-but": { "wildcard": ["*/lib/*", "*/bin/*"] }}]
}
}
Para obtener más información, consulte Coincidencia con comodines.
Coincidencia numérica
La coincidencia numérica funciona con valores que son números JSON. Está limitada a valores entre -5.0e9 y +5.0e9 inclusive, con 15 dígitos de precisión o seis dígitos a la derecha del punto decimal.
A continuación, se muestra la coincidencia numérica de un patrón de eventos que solo coincide con los eventos que son verdaderos en todos los campos.
{
"detail": {
"c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ],
"d-count": [ { "numeric": [ "<", 10 ] } ],
"x-limit": [ { "numeric": [ "=", 3.018e2 ] } ]
}
}
Coincidencia de direcciones IP
Puede utilizar la coincidencia de direcciones IP para direcciones IPv4 e IPv6. El siguiente patrón de eventos muestra las direcciones IP que coinciden con las direcciones IP que comienzan con 10.0.0 y terminan con un número entre 0 y 255.
{
"detail": {
"sourceIPAddress": [ { "cidr": "10.0.0.0/24" } ]
}
}
Coincidencia exists
La coincidencia exists funciona en presencia o ausencia de un campo en la JSON del evento.
La coincidencia exists solo funciona en nodos secundarios. No funciona en nodos intermedios.
El siguiente patrón de eventos coincide con cualquier evento que tenga un campo detail.state
.
{
"detail": {
"state": [ { "exists": true } ]
}
}
El patrón de eventos precedente coincide con el siguiente evento.
{
"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"
}
}
El patrón de eventos anterior NO coincide con el evento siguiente porque no tiene un campo detail.state
.
{
"detail-type": [ "EC2 Instance State-change Notification" ],
"resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ],
"detail": {
"c-count" : {
"c1" : 100
}
}
}
Coincidencia Equals-ignore-case
La coincidencia Equals-ignore-case funciona con valores de cadena independientemente de las mayúsculas y minúsculas.
El siguiente patrón de eventos coincide con cualquier evento que tenga un campo detail-type
que coincida con la cadena especificada, independientemente de las mayúsculas y minúsculas.
{
"detail-type": [ { "equals-ignore-case": "ec2 instance state-change notification" } ]
}
El patrón de eventos precedente coincide con el siguiente evento.
{
"detail-type": [ "EC2 Instance State-change Notification" ],
"resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ],
"detail": {
"c-count" : {
"c1" : 100
}
}
}
Coincidencia con comodines
Puede utilizar el carácter comodín (*) para hacer coincidir los valores de cadena en patrones de eventos.
nota
Actualmente, el carácter comodín solo se admite en las reglas del bus de eventos.
Consideraciones a la hora de utilizar caracteres comodín en los patrones de eventos:
-
Puede especificar cualquier número de caracteres comodín en un valor de cadena determinado; sin embargo, no se admiten caracteres comodín consecutivos.
-
EventBridge admite el uso del carácter de barra invertida (\) para especificar los caracteres literales * y \ en los filtros comodín:
-
La cadena
\*
representa el carácter * literal -
La cadena
\\
representa el carácter \ literal
No se admite el uso de la barra invertida para escapar de otros caracteres.
-
Complejidad de caracteres comodín y patrones de eventos
Existe un límite en cuanto a la complejidad de una regla que utilice caracteres comodín. Si una regla es demasiado compleja, EventBridge devuelve una InvalidEventPatternException
al intentar crear la regla. Si la regla genera un error de este tipo, considere la posibilidad de utilizar las siguientes instrucciones para reducir la complejidad del patrón de eventos:
-
Reduzca el número de caracteres comodín utilizados
Utilice caracteres comodín solo cuando realmente necesite hacer coincidir varios valores posibles. Por ejemplo, considere el siguiente patrón de eventos, en el que desea hacer coincidir los buses de evento de la misma región:
{ "EventBusArn": [ { "wildcard": "*:*:*:*:*:event-bus/*" } ] }
En el caso anterior, muchas de las secciones de la ARN se basarán directamente en la región en la que residan los buses de evento. Por lo tanto, si utiliza la región
us-east-1
, el siguiente ejemplo podría ser un patrón menos complejo que aún coincida con los valores deseados:{ "EventBusArn": [ { "wildcard": "arn:aws:events:us-east-1:*:event-bus/*" } ] }
-
Reduzca las secuencias de caracteres que se repiten después de un carácter comodín
Si la misma secuencia de caracteres aparece varias veces después de usar un comodín, aumenta la complejidad del procesamiento del patrón de eventos. Rediseñe el patrón de eventos para minimizar las secuencias repetidas. Por ejemplo, considere el siguiente ejemplo, que coincide con el nombre de archivo
doc.txt
de cualquier usuario:{ "FileName": [ { "wildcard": "/Users/*/dir/dir/dir/dir/dir/doc.txt" } ] }
Si supiera que el archivo
doc.txt
solo aparecería en la ruta especificada, podría reducir la secuencia de caracteres repetidos de la siguiente manera:{ "FileName": [ { "wildcard": "/Users/*/doc.txt" } ] }
Ejemplo complejo con coincidencia múltiple
Puede combinar varios criterios de coincidencia en un patrón de eventos más complejo. Por ejemplo, la siguiente regla combina los patrones de eventos anything-but
y 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 ] } ]
}
}
nota
Al crear patrones de eventos, si incluye una clave más de una vez, la última referencia será la que se utilice para evaluar los eventos. Por ejemplo, para el siguiente patrón:
{ "detail": { "location": [ { "prefix": "us-" } ], "location": [ { "anything-but": "us-east" } ] } }
solo se tendrá en cuenta { "anything-but": "us-east" }
a la hora de evaluar la location
.
Ejemplo complejo con coincidencia $or
También puede crear patrones de eventos complejos que comprueben si alguno de los valores de los campos coinciden en varios campos. Utilice $or
para crear un patrón de eventos que coincida si alguno de los valores de varios campos coincide.
Tenga en cuenta que puede incluir otros tipos de filtros, como coincidencia numérica y matrices, en la coincidencia de patrones para los campos individuales del constructo $or
.
El siguiente patrón de eventos coincide si se cumple alguna de las siguientes condiciones:
-
El campo
c-count
es mayor que 0 o menor o igual que 5. -
El campo
d-count
tiene menos de 10. -
El campo
x-limit
es igual a 3.018e2.
{
"detail": {
"$or": [
{ "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ] },
{ "d-count": [ { "numeric": [ "<", 10 ] } ] },
{ "x-limit": [ { "numeric": [ "=", 3.018e2 ] } ] }
]
}
}
nota
Las API que aceptan un patrón de eventos (comoPutRule
, CreateArchive
, UpdateArchive
y TestEventPattern
) arrojarán un valor InvalidEventPatternException
si el uso de $or
da lugar a más de 1000 combinaciones de reglas.
Para determinar el número de combinaciones de reglas en un patrón de eventos, multiplique el número total de argumentos de cada matriz $or
del patrón de eventos. Por ejemplo, el patrón anterior contiene una sola matriz $or
con tres argumentos, por lo que el número total de combinaciones de reglas también es tres. Si agrega otra matriz $or
con dos argumentos, el total de combinaciones de reglas sería seis.