He atascado el problema con la definición de una regla para hacer coincidir mis eventos. Googleado, probado.
Digamos que tenemos el siguiente evento que contiene el objeto user en la matriz de events :
{ "version": "0", "...": "...", "detail": { "events": [ { "user": { "id": "5efdee60b48e7c1836078290" } } ] } } ¿Hay alguna forma de hacer coincidir el user.id de usuario en una regla de EventBus? Ya he intentado usar la siguiente regla que no es válida:
{ "detail": { "events": [ { "user": { "id": [ "5efdee60b48e7c1836078290" ] } } ] } }entonces,
{ "detail": { "events[0]": { "user": { "id": [ "5efdee60b48e7c1836078290" ] } } } }también ningún efecto.
No quiero rendirme, pero ya me cansé ;)
Este patrón debería funcionar para coincidir con este evento:
{ "detail": { "events": { "user": { "id": [ "5efdee60b48e7c1836078290" ] } } } }Actualmente, EventBridge solo admite valores simples coincidentes (cadena, entero, booleano, nulo) con una matriz. Puede leer más en la documentación del servicio .
Jugué un poco con tu ejemplo, pero no puedo hacerlo funcionar. Según la lectura de las matrices en los patrones de eventos de EventBridge, debo concluir que no es posible hacer coincidir matrices internas con valores complejos.
La cita que parece confirmar esto es "Si el valor en el evento es una matriz, entonces el patrón coincide si la intersección de la matriz de patrones y la matriz de eventos no está vacía".
Y desde la página Patrones de eventos "Los valores de coincidencia siempre están en matrices". Entonces, si su patrón es una matriz y el valor en el evento también es una matriz (este es el ejemplo que dio), se realiza una prueba de intersección basada en "conjunto". Su patrón tendría que coincidir con toda la entrada de la matriz, no solo con un solo campo como el que tiene en el ejemplo.