Mejores prácticas a la hora de definir los patrones de EventBridge eventos de Amazon - Amazon EventBridge

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.

Mejores prácticas a la hora de definir los patrones de EventBridge eventos de Amazon

A continuación, se muestran algunas prácticas recomendadas que se deben tener en cuenta al definir los patrones de eventos en sus reglas del bus de eventos.

Evitar escribir bucles infinitos

En EventBridge, es posible crear reglas que conduzcan a bucles infinitos, en los que una regla se activa repetidamente. Por ejemplo, una regla puede detectar que las ACL han cambiado en un bucket de 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 evitar estos problemas, escriba los patrones de eventos de sus reglas para que sean lo más precisos posible, de modo que solo coincidan con los eventos que realmente quiere que se envíen al destino. En el ejemplo anterior, crearía un patrón de eventos que coincidiera con los eventos, de modo que las acciones desencadenadas no vuelvan a activar la misma regla. Por ejemplo, cree un patrón de eventos en la regla que coincida con los eventos solo si se descubre que las ACL están en mal estado, en lugar de hacerlo después de cualquier cambio. Para obtener más información, consulte Hacer que los patrones de eventos sean lo más precisos posible y Limitar sus patrones de eventos para tener en cuenta las actualizaciones del origen de los eventos.

Un bucle infinito puede generar cargos superiores a los esperados rápidamente. También puede provocar una limitación y un retraso en la entrega de los eventos. Puede controlar el límite superior de tus tasas de invocación para recibir alertas sobre picos de volumen inesperados.

Utilice la función de presupuestos para que le avise cuando los cargos superen el límite especificado. Para obtener más información, consulte Gestión de costos con presupuestos.

Hacer que los patrones de eventos sean lo más precisos posible

Cuanto más preciso sea el patrón de eventos, mayor será la probabilidad de que coincida solo con los eventos que realmente desea y evitará coincidencias inesperadas cuando se agreguen nuevos eventos a un origen de eventos o se actualicen los eventos existentes para incluir nuevas propiedades.

Los patrones de eventos pueden incluir filtros que coincidan con:

  • Metadatos del evento sobre el evento, como source, detail-type, account oregion.

  • Datos de eventos, es decir, los campos dentro del objeto detail.

  • El contenido del evento o los valores reales de los campos dentro del objeto detail.

La mayoría de los patrones son simples, como especificar solo los filtros source y detail-type. Sin embargo, EventBridge los patrones incluyen la flexibilidad de filtrar cualquier clave o valor del evento. Además, puede aplicar filtros de contenido, como filtros prefix y suffix para mejorar la precisión de sus patrones. Para obtener más información, consulte Filtrado de contenido en los patrones de EventBridge eventos de Amazon.

Especifique el origen del evento y el tipo de detalle como filtros

Puede reducir la generación de bucles infinitos y la coincidencia de eventos no deseados haciendo que sus patrones de eventos sean más precisos utilizando los campos de metadatos source y detail-type.

Cuando necesite hacer coincidir valores específicos dentro de dos o más campos, utilice el operador de comparación $or en lugar de enumerar todos los valores posibles dentro de una sola matriz de valores.

En el caso de los eventos que se envíen directamente AWS CloudTrail, te recomendamos que utilices el eventName campo como filtro.

El siguiente ejemplo de patrón de eventos coincide con CreateQueue o SetQueueAttributes desde el servicio Amazon Simple Queue Service CreateKey o con DisableKeyRotation eventos del AWS Key Management Service servicio.

{ "detail-type": ["AWS API Call via CloudTrail"], "$or": [{ "source": [ "aws.sqs" ], "detail": { "eventName": [ "CreateQueue", "SetQueueAttributes" ] } }, { "source": [ "aws.kms" ], "detail": { "eventName": [ "CreateKey", "DisableKeyRotation" ] } } ] }

Especificar la cuenta y la región como filtros

Inclusión de los campos region y account en el patrón de eventos le ayuda a limitar la coincidencia de eventos entre cuentas o regiones.

Especificar los filtros de contenido

El filtrado basado en el contenido puede ayudar a mejorar la precisión del patrón de eventos y, al mismo tiempo, mantener la longitud del patrón de eventos al mínimo. Por ejemplo, la coincidencia basada en un rango numérico puede resultar útil en lugar de enumerar todos los valores numéricos posibles.

Para obtener más información, consulte Filtrado de contenido en los patrones de EventBridge eventos de Amazon.

Limitar sus patrones de eventos para tener en cuenta las actualizaciones del origen de los eventos

Al crear patrones de eventos, debe tener en cuenta que los esquemas y dominios de los eventos pueden evolucionar y expandirse con el tiempo. Una vez más, hacer que los patrones de eventos sean lo más precisos posible le ayuda a limitar las coincidencias inesperadas si el origen del evento cambia o se expande.

Por ejemplo, supongamos que está realizando la coincidencia con eventos de un nuevo microservicio que publica eventos relacionados con los pagos. Inicialmente, el servicio usa el dominio acme.payments y publica un solo evento, Payment accepted:

{ "detail-type": "Payment accepted", "source": "acme.payments", "detail": { "type": "credit", "amount": "100", "date": "2023-06-10", "currency": "USD" } } }

En este punto, podría crear un patrón de eventos simple que coincida con los eventos de Pago aceptado:

{ “source” : “acme.payments” }

Sin embargo, supongamos que el servicio introduce más adelante un nuevo evento para los pagos rechazados:

{ "detail-type": "Payment rejected", "source": "acme.payments", "detail": { } }

En este caso, el patrón de eventos simple que creó ahora coincidirá con ambos eventos Payment accepted y Payment rejected. EventBridge enruta ambos tipos de eventos al destino especificado para su procesamiento, lo que puede provocar errores de procesamiento y costes de procesamiento adicionales.

Para limitar el patrón de eventos a Payment accepted eventos únicamente, debes especificar ambos source ydetail-type, como mínimo:

{ "detail-type": "Payment accepted", "source": "acme.payments" } }

También puede especificar la cuenta y la región en el patrón de eventos para limitar aún más los eventos entre cuentas o regiones que coincidan con esta regla.

{ "account": "012345678910", "source": "acme.payments", "region": "AWS-Region", "detail-type": "Payment accepted" }

Validar patrones de eventos

Para garantizar que las reglas coincidan con los eventos deseados, le recomendamos encarecidamente que valide sus patrones de eventos. Puede validar sus patrones de eventos mediante la EventBridge consola o la API: