gpt4 book ai didi

amazon-web-services - 如何避免在 AWS 云跟踪 API 调用中获得较旧的结果

转载 作者:行者123 更新时间:2023-12-04 21:04:43 25 4
gpt4 key购买 nike

我们正在使用 AWS Cloud Trail 来检索数据(云跟踪事件)。我们使用了 gem 'aws-sdk-cloudtrail'(1.0 版)。根据 Cloud Trail,我们最多可以检索 50 个结果(最近一次)。为了获取上一个(旧一次)结果,我们使用在上一个响应中收到的“下一个 token ”。我们执行此操作,直到我们得到一个空的“下一个 token ”。当我们收到一个空 token 时,这意味着已检索到所有云跟踪数据。

例如:
假设 Cloud Trail 记录了 100 个事件:
在第一个 api 调用中,我们收到了最新的 50 个结果以及用于检索下一个 50 个(较旧的 50 个)的 token 。
在第二个 api 调用中,我们收到剩余的 50 个结果(较旧的结果)以及作为 nil 的下一个标记。这意味着没有更多的结果要获取。

在我们的例子中,我们将从跟踪中收到的所有结果保存在我们的本地数据库中。我们定期重复此操作。
当第二次这样做时(重复上面解释的过程),我们再次收到新的和旧的结果。我们再次重复 API 调用,直到我们得到“next-token”为零。这导致接收到在第一个循环执行时已经存储在数据库中的冗余数据。
有没有办法只获取新记录的云跟踪事件第二个周期。

最佳答案

就像@Vorsprung 所说的那样,您可以使用本地数据库中的最大事件日期时间。

以下是您的用例/问题的详细解决方案:

1. Query to your local database to check that cloudtrail data is present in the local database.

IF yes
// It means you have stored some data from cloudtrail before.
// And now you are going to do request to cloudtrail for new trail events.
// Note - At a time of the first request you don't have a token (i.e. next-token)

GOTO Step 3

ELSE
// It means you have not stored any data from cloudtrail before.
// And now you are going to do the first request to cloudtrail.
// Note - At a time of the first request you don't have a token (i.e. next-token)

GOTO Step 2

2. LOOP true

token = nil

IF token
// Send request to cloudtrail to get next bactch of latest cloudtrail events, now pass token(i.e. next-token) as parameter.
// Which will return the maximum latest 50 trail events.
// It will also return next-token if more cloudtrail events are remaining.

IF next-token
token = next-token
ELSE
BREAK LOOP;
END

ELSE
// Send request to cloudtrail to get the latest cloudtrail events.
// Which will return the maximum latest 50 trail events.
// It will also return next-token if more cloudtrail events are remaining.

IF next-token
token = next-token
ELSE
BREAK LOOP;
END
END
END

3. LOOP true

token = nil
start_date_time = max_trail_event_date_time_form_local_db

IF token
// Send request to cloudtrail to get next bactch of latest cloudtrail events, now pass token and start_date_time(i.e. next-token and max_event_date_time_form_local_db) as parameters.
// Which will return the maximum latest 50 events which are logged after start_date_time.
// It will also return next-token if more cloudtrail events are remaining.

IF next-token
token = next-token
ELSE
BREAK LOOP;
END

ELSE
// Send request to cloudtrail to get the latest cloudtrail events, now pass start_date_time(i.e. max_trail_event_date_time_form_local_db) as parameter.
// Which will return the maximum latest 50 events which are logged after start_date_time.
// It will also return next-token if more cloudtrail events are remaining.

IF next-token
token = next-token
ELSE
BREAK LOOP;
END
END
END

希望它会有所帮助。

关于amazon-web-services - 如何避免在 AWS 云跟踪 API 调用中获得较旧的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49259304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com