【发布时间】:2020-10-20 14:26:26
【问题描述】:
我正在使用 Aws::S3::Model::ListObjectsV2Request 列出 AWS s3 中的对象。
(它是c++ sdk,但我想Java的实现是一样的,所以如果你熟悉Java AWS S3 sdk,也请看看我的问题)
有超过 1000 个对象,根据 SDK 1000 条记录限制,一页无法容纳。
我发现两个 API 似乎都可以合理地处理这个问题。 1.
// pseudo code
list_req
all_res = []
while true {
res = list_req.request()
all_res.add(res.get_all_entries())
if (res.isTruncated()) {
list_req.set_continuation_token(res.get_continuation_token());
}
}
2.
// pseudo code
list_req
all_res = []
while true {
res = list_req.request()
all_res.add(res.get_all_entries())
if (res.isTruncated()) {
list_req.set_start_after(res.get_last_entry());
}
}
这两种方法有什么区别? (我的情况是第一种方法The continuation token provided is incorrect with address : 52.218.217.49会出现异常,所以只能使用第二种方法。)
【问题讨论】:
-
继续令牌与特定的客户端会话相关联,而 start after 可以被任何客户端使用并且永不过期。
-
如果您可以提供#1 的实际代码,我们可以尝试重现您的情况。
-
对于错误:
The continuation token provided is incorrect,请参考forums.aws.amazon.com/thread.jspa?threadID=256859 延续标记,为Base64,通常包含“=、+或/”字符。如果身份验证代码包含加号 (+),请在请求中将其编码为 %2B。将正斜杠编码为 %2F 并等于 %3D
标签: amazon-web-services amazon-s3 aws-sdk