我们正在使用 AWS Cloud Trail 来检索数据(云跟踪事件)。我们使用了 gem 'aws-sdk-cloudtrail'(1.0 版)。根据 Cloud Trail,我们最多可以检索 50 个结果(最近一次)。为了获取先前(较旧的一次)结果,我们使用在先前响应中收到的“下一个令牌”。我们执行此操作,直到我们得到一个空的“下一个令牌”。当我们收到一个空令牌时,这意味着所有的云轨迹数据都已被检索到。
例如:假设 Cloud Trail 有 100 个事件登录:在第一个 api 调用中,我们收到了最新的 50 个结果以及用于检索下一个 50(旧 50)的令牌。在第二个 api 调用中,我们收到剩余的 50 个结果(较旧的结果)以及下一个标记为 nil。这意味着没有更多的结果可以获取。
在我们的例子中,我们将从跟踪收到的所有结果保存在本地数据库中。我们会定期重复此操作。当第二次这样做时(重复上述过程),我们再次收到很少新的和旧的结果。我们再次重复 API 调用,直到我们将 'next-token' 设为 nil。这导致接收到在第一个循环执行时已经存储在数据库中的冗余数据。有什么方法可以只获取新记录的云跟踪事件第二个周期。