Мы используем AWS Cloud Trail для извлечения данных (события облачного следа). Мы использовали гем aws-sdk-cloudtrail (версия 1.0). Согласно Cloud Trail мы можем получить максимум 50 результатов (последний раз). Чтобы получить предыдущие (более старые) результаты, мы используем «следующий токен», полученный в предыдущем ответе. Мы выполняем это до тех пор, пока не получим пустой «следующий токен». Когда мы получаем пустой токен, это означает, что все данные облачного следа были получены.
Например: предположим, что в Cloud Trail зарегистрировано 100 событий: в первом вызове API мы получили последние 50 результатов вместе с токеном для получения следующих 50 (более старых 50). Во втором вызове API мы получаем оставшиеся 50 результатов (более старые результаты) вместе со следующим токеном как nil. Это означает, что результатов для получения больше нет.
В нашем случае мы сохраняем все результаты, полученные от трейла, в нашей локальной базе данных и периодически повторяем это. Делая это во второй раз (повторяя описанный выше процесс), мы снова получаем меньше новых и мало старых результатов. Мы снова повторяем вызов API, пока не получим «следующий токен» равным нулю. Это приводит к получению избыточных данных, которые уже были сохранены в базе данных при выполнении первого цикла. Есть ли способ получить в дальнейшем только недавно зарегистрированные события облачного следа во втором цикле.