Amazon EventBridge: сопоставление объекта внутри массива

Я застрял в проблеме с определением правила сопоставления моих событий. Погуглил, протестировал.

Скажем, у нас есть следующее событие, которое содержит объект user в массиве events:

{
    "version": "0",
    "...": "...",
    "detail": {
        "events": [
            {
                "user": {
                    "id": "5efdee60b48e7c1836078290"
                }
            }
        ]
    }
}

Есть ли способ сопоставить user.idв правиле EventBus? Я уже пробовал использовать следующее правило, которое недействительно:

{
  "detail": {
    "events": [
      {
        "user": {
          "id": [
            "5efdee60b48e7c1836078290"
          ]
        }
      }
    ]
  }
}

тогда,

{
  "detail": {
    "events[0]": {
      "user": {
        "id": [
          "5efdee60b48e7c1836078290"
        ]
      }
    }
  }
}

тоже никакого эффекта.

Не хочу сдаваться, но мне это надоело;)

2 ответа

Этот шаблон должен работать, чтобы соответствовать этому событию:

{
  "detail": {
    "events": {
      "user": {
        "id": [
          "5efdee60b48e7c1836078290"
        ]
      }
    }
  }
}

Сегодня EventBridge поддерживает сопоставление только простых значений (строка, целое число, логическое значение, null) с массивом. Подробнее читайте в сервисной документации.

Я немного поигрался с вашим примером, но не могу заставить его работать. Основываясь на чтении массивов в шаблонах событий EventBridge, я должен сделать вывод, что сопоставление внутри массивов со сложными значениями невозможно.

Цитата, которая, кажется, подтверждает это: "Если значение в событии является массивом, тогда шаблон соответствует, если пересечение массива шаблонов и массива событий не пусто".

И со страницы " Шаблоны событий " "Соответствующие значения всегда находятся в массивах". Итак, если ваш шаблон является массивом, а значение в событии также является массивом (это приведенный вами пример), выполняется проверка пересечения на основе "набора". Ваш шаблон должен соответствовать всей записи массива, а не только одному полю, как в примере.

Другие вопросы по тегам