amazon-web-services - AWS S3 SDK ListObjectsV2 startafter 和 ContinuationToken 有什么区别?
问题描述
我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
,所以我只能使用第二种方法。)
解决方案
StartAfter (string) -- StartAfter 是您希望 Amazon S3 开始列出的位置。Amazon S3 在此指定键之后开始列出。StartAfter 可以是存储桶中的任何键。
ContinuationToken (string) -- ContinuationToken 指示 Amazon S3 正在使用令牌在此存储桶上继续该列表。ContinuationToken 被混淆并且不是真正的密钥。
因此,如果您想从以 开头的对象开始列出存储桶,请G
使用StartAfter = 'G'
.
当ContinuationToken
返回超过 1000 个结果时使用。在这种情况下,响应会提供一个ContinuationToken
您必须传递给下一次调用的信息。结果将从最后一个列表完成的地方继续。
如果要从特定名称开始并检索超过 1000 个对象,您可以指定这两个参数。
推荐阅读
- azure - Azure DevOps (VSTS / TFS) - 通过 OData/API 添加讨论
- r - 如何使用 R 中的绘图功能绘制具有不同颜色的不同组
- c# - Identity Server 4 - API 在部署到服务器时返回 401 Unauthorized
- python - 在python中使用变量的Mysql Update语句
- c# - 具有多个部分的 C# xml 到字典转换
- r - 如何从 zip 读取多个 csv 文件并导入 R 中的不同数据帧?
- ios - 适用于 iOS 的 HERE SDK - 切换服务器环境
- javascript - 我如何限制数组只存储 3 个对象?
- python - pandas 函数 isin 不适用于 def 方法中的数据框
- ansible - 在ansible中从寄存器创建变量