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.
Patrones de EventBridge eventos de Amazon
Los patrones de eventos tienen la misma estructura que los eventos con los que coinciden. Las reglas utilizan patrones de eventos para seleccionar eventos y enviarlos a los destinos. Un patrón de eventos coincide con un evento o no lo hace.
importante
En EventBridge, es posible crear reglas que pueden provocar higher-than-expected cargos y estrangulamientos. Por ejemplo, puede crear inadvertidamente una regla que conduzca a un bucle infinito, en el que una regla se active de forma recursiva sin fin. Imagine que creó una regla puede detectar que las ACL han cambiado en un bucket de Amazon S3 y activar software para cambiarlas al estado deseado. Si la regla no se ha escrito minuciosamente, un nuevo cambio de las ACL vuelve a activar la regla, lo que crea un bucle infinito.
Para obtener orientación sobre cómo escribir reglas y patrones de eventos precisos para minimizar estos resultados inesperados, consulte Prácticas recomendadas a la hora de definir reglas de Amazon EventBridge y Mejores prácticas a la hora de definir los patrones de EventBridge eventos de Amazon.
En el siguiente vídeo se repasan los aspectos básicos de los patrones de eventos:
Temas
- Creación de patrones de eventos
- Ejemplos de eventos y patrones de eventos
- Hacer coincidir valores nulos y cadenas vacías en los patrones de EventBridge eventos de Amazon
- Matrices en los patrones de EventBridge eventos de Amazon
- Filtrado de contenido en los patrones de EventBridge eventos de Amazon
- Probar un patrón de eventos con el EventBridge Sandbox
- Mejores prácticas a la hora de definir los patrones de EventBridge eventos de Amazon
El siguiente evento muestra un AWS evento sencillo de Amazon EC2.
{
"version": "0",
"id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
"detail-type": "EC2 Instance State-change Notification",
"source": "aws.ec2",
"account": "111122223333",
"time": "2017-12-22T18:43:48Z",
"region": "us-west-1",
"resources": [
"arn:aws:ec2:us-west-1:123456789012:instance/i-1234567890abcdef0"
],
"detail": {
"instance-id": "i-1234567890abcdef0",
"state": "terminated"
}
}
El siguiente patrón de eventos procesa todos los eventos instance-termination
de Amazon EC2.
{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": {
"state": ["terminated"]
}
}
Creación de patrones de eventos
Para crear un patrón de eventos, especifique los campos con los que desea que coincida el patrón del evento. Especifique únicamente los campos que utilice para la coincidencia. El ejemplo de patrón de eventos anterior solo proporciona valores para tres campos: los campos de nivel superior "source"
y"detail-type"
, y el "state"
campo dentro del campo "detail"
objeto. EventBridge ignora todos los demás campos del evento al aplicar la regla.
Para que un patrón de eventos coincida con un evento, el evento debe contener todos los nombres de campos enumerados en el patrón. Los nombres de los campos también deben aparecer en el evento con la misma estructura de anidación.
Al escribir patrones de evento para buscar eventos, puede utilizar la API de TestEventPattern
o el comando de la CLI test-event-pattern
para probar si el patrón coincide con los eventos correctos. Para obtener más información, consulte TestEventPattern.
Coincidencias de valores de eventos
En un patrón de eventos, el valor que debe coincidir está en una matriz JSON, entre corchetes ("[", "]") para que pueda proporcionar varios valores. Por ejemplo, para hacer coincidir los eventos de Amazon EC2 o AWS Fargate, puede utilizar el siguiente patrón, que coincide con los eventos en los que el valor del "source"
campo es o"aws.ec2"
. "aws.fargate"
{
"source": ["aws.ec2", "aws.fargate"]
}
Consideraciones sobre la creación de patrones de eventos
A continuación, se muestran algunos aspectos que debe considerar a la hora de crear sus patrones de eventos:
EventBridge ignora los campos del evento que no están incluidos en el patrón de eventos. El efecto es que hay un comodín
"*": "*"
para los campos que no aparecen en el patrón de eventos.Los valores que coinciden con patrones de eventos siguen las reglas JSON. Puede incluir cadenas entre comillas (“), números y palabras clave
true
,false
ynull
.En el caso de las cadenas, EventBridge utiliza la character-by-character coincidencia exacta sin doblar mayúsculas y minúsculas ni normalizar ninguna otra cadena.
En el caso de los números, EventBridge utiliza la representación de cadenas. Por ejemplo, 300, 300.0 y 3.0e2 no se consideran iguales.
Si se especifican varios patrones para el mismo campo JSON, EventBridge solo usa el último.
-
Tenga en cuenta que cuando EventBridge compila patrones de eventos para su uso, utiliza un punto (.) como carácter de unión.
Esto significa que EventBridge tratará los siguientes patrones de eventos como idénticos:
## has no dots in keys { "detail" : { "state": { "status": [ "running" ] } } } ## has dots in keys { "detail" : { "state.status": [ "running" ] } }
Y que ambos patrones de eventos coincidirán con los dos eventos siguientes:
## has no dots in keys { "detail" : { "state": { "status": "running" } } } ## has dots in keys { "detail" : { "state.status": "running" } }
nota
Esto describe EventBridge el comportamiento actual y no se debe confiar en él para que no cambie.
-
Los patrones de eventos que contienen campos duplicados no son válidos. Si un patrón contiene campos duplicados, EventBridge solo tiene en cuenta el valor final del campo.
Por ejemplo, los siguientes patrones de eventos coincidirán con el mismo evento:
## 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"] } }
Y EventBridge trata los dos eventos siguientes como idénticos:
## 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"] } ] }
nota
Esto describe EventBridge el comportamiento actual y no se debe confiar en él para que no cambie.
Operaciones de comparación para su uso en patrones de eventos
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 |
---|---|---|
Y |
El valor de Location (Ubicación) es “New York” y el de Day (Día) es “Monday” |
|
Cualquier cosa, pero | El estado es cualquier valor además de «inicializar». |
|
Cualquier cosa, pero (comienza con) | La región no está en los EE. UU. |
|
Cualquier cosa, pero (termina con) | FileName no termina con la extensión.png. |
|
Cualquier cosa menos (ignore mayúsculas y minúsculas) | El estado es cualquier valor que no sea «inicializar» o cualquier otra variación entre mayúsculas y minúsculas, como «INICIALIZAR». |
|
Cualquier cosa, excepto usar un comodín | FileName no es una ruta de archivo que incluya. |
|
La región se encuentra en EE. UU. |
|
|
Empieza por (ignora mayúsculas y minúsculas) | El nombre del servicio comienza con las letras «eventb», independientemente de las mayúsculas y minúsculas. |
|
LastName está vacío. |
|
|
Igual a |
El valor de Name (Nombre) es “Alice” |
|
El valor de Name (Nombre) es “Alice” |
|
|
FileName termina con una extensión.png |
|
|
Termina con (ignorar 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». |
|
ProductName existe |
|
|
ProductName no existe |
|
|
El valor de Weather (Tiempo) es cualquier valor menos “Raining” (Lluvia) |
|
|
El valor de UserID (ID de usuario) es nulo |
|
|
El valor de Price (Precio) es 100 |
|
|
El valor de Price (Precio) es superior a 10 e inferior o igual a 20 |
|
|
Or (Disyunción) |
PaymentType es «crédito» o «débito» |
|
El valor de Location (Ubicación) es “New York” o el de Day (Día) es “Monday”. |
|
|
Cualquier archivo con la extensión.png, ubicado dentro de la carpeta "dir" |
|
Ejemplos de eventos y patrones de eventos
Puede usar todos los tipos de datos y valores JSON para hacer coincidir los eventos. A continuación, se muestran los eventos y los patrones de eventos que se corresponden con ellos.
Coincidencia de campo
Puede hacer coincidir el valor de un campo. Considere el siguiente evento de Amazon EC2 Auto Scaling.
{
"version": "0",
"id": "3e3c153a-8339-4e30-8c35-687ebef853fe",
"detail-type": "EC2 Instance Launch Successful",
"source": "aws.autoscaling",
"account": "123456789012",
"time": "2015-11-11T21:31:47Z",
"region": "us-east-1",
"resources": [],
"detail": {
"eventVersion": "",
"responseElements": null
}
}
Para el evento anterior, puede utilizar el campo "responseElements"
para que coincida.
{
"source": ["aws.autoscaling"],
"detail-type": ["EC2 Instance Launch Successful"],
"detail": {
"responseElements": [null]
}
}
Coincidencia de valor
Considere el siguiente evento de Amazon Macie, que está truncado.
{
"version": "0",
"id": "0948ba87-d3b8-c6d4-f2da-732a1example",
"detail-type": "Macie Finding",
"source": "aws.macie",
"account": "123456789012",
"time": "2021-04-29T23:12:15Z",
"region":"us-east-1",
"resources": [
],
"detail": {
"schemaVersion": "1.0",
"id": "64b917aa-3843-014c-91d8-937ffexample",
"accountId": "123456789012",
"partition": "aws",
"region": "us-east-1",
"type": "Policy:IAMUser/S3BucketEncryptionDisabled",
"title": "Encryption is disabled for the S3 bucket",
"description": "Encryption is disabled for the Amazon S3 bucket. The data in the bucket isn’t encrypted
using server-side encryption.",
"severity": {
"score": 1,
"description": "Low"
},
"createdAt": "2021-04-29T15:46:02Z",
"updatedAt": "2021-04-29T23:12:15Z",
"count": 2,
.
.
.
El siguiente patrón de eventos coincide con cualquier evento que tenga una puntuación de gravedad de 1 y un recuento de 2.
{
"source": ["aws.macie"],
"detail-type": ["Macie Finding"],
"detail": {
"severity": {
"score": [1]
},
"count":[2]
}
}