S3Client.ListObjects只返回1000个对象。如何使用Amazon C#库检索所有现有对象的列表?如何列出Amazon S3存储桶中的_all_对象?
21
A
回答
53
如前所述,Amazon S3确实需要Listing Keys Using the AWS SDK for .NET:
如水桶可以包含按键几乎无限数量,清单查询的 完整的结果可能会非常大。要管理大型结果集,Amazon S3会使用分页将它们拆分为多个响应,即 。每个列表键响应都会返回一个高达 1,000个键的页面,并带有一个指示符,指示响应是否被截断。 您发送一系列列表密钥请求,直到您收到所有密钥 。
所提到的指标是从ObjectsResponse Class的NextMarker属性 - 它的使用在完整的示例Listing Keys Using the AWS SDK for .NET所示,与相关的片段的存在:
static AmazonS3 client;
client = Amazon.AWSClientFactory.CreateAmazonS3Client(
accessKeyID, secretAccessKeyID);
ListObjectsRequest request = new ListObjectsRequest();
request.BucketName = bucketName;
do
{
ListObjectsResponse response = client.ListObjects(request);
// Process response.
// ...
// If response is truncated, set the marker to get the next
// set of keys.
if (response.IsTruncated)
{
request.Marker = response.NextMarker;
}
else
{
request = null;
}
} while (request != null);
0
根据文档的客户端使用分页的你描述的情况。根据文件,您应该使用IsTruncated的结果...如果它是true
再次调用ListObjects
并正确设置Marker
以获得下一页等 - 停止呼叫时IsTruncated
返回false
。
3
注意,上面的答案是不使用推荐的API列表对象:http://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html
下面的片段展示了它的外观与新的API:
using (var s3Client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1))
{
ListObjectsV2Request request = new ListObjectsV2Request
{
BucketName = bucketName,
MaxKeys = 10
};
ListObjectsV2Response response;
do
{
response = await s3Client.ListObjectsV2Async(request);
// Process response.
// ...
request.ContinuationToken = response.NextContinuationToken;
} while (response.IsTruncated == true);
}
相关问题
- 1. 删除S3存储桶中的对象
- 2. AWS S3错误的存储桶对象
- 3. 如何使用Java列出存储桶中的所有AWS S3对象
- 4. 如何从AWS S3存储桶获取唯一对象列表
- 5. 如何从S3存储桶中的文件夹获取对象
- 6. 如何更新AWS S3存储桶中的对象属性
- 7. 从S3下载存储桶中的对象列表
- 8. 检查s3存储桶中是否存在单个对象?
- 9. 使用C从Amazon S3存储桶下载对象时出错#
- 10. 如何访问cloudfront到s3存储桶对象简单网址
- 11. 如何删除s3桶中的对象
- 12. Django + AWS S3存储桶:对S3存储桶进行身份验证访问
- 13. 使用Boto3更改S3存储桶中对象的ACL
- 14. S3存储桶子文件夹中的对象(PHP)
- 15. 如何使用amazon-javascript-sdk列出AWS S3存储桶?
- 16. 如何按修改日期列出Amazon S3存储桶内容?
- 17. S3存储桶访问
- 18. 在S3存储桶中设置对象的所有者
- 19. 从AWS S3存储桶中删除对象(不在代码中)
- 20. AWS S3存储桶策略
- 21. 的NodeJS LAMBDA S3存储桶
- 22. 在aws s3存储桶中加密对象
- 23. 使用python列出Amazon S3存储桶中的所有文件
- 24. 在wordpress页面上的Amazon s3存储桶中列出文件
- 25. 在Amazon S3中删除对象或存储桶?
- 26. Amazon S3:如何获取存储桶中的文件夹列表?
- 27. Amazon S3存储桶上传
- 28. Amazon S3安全存储桶
- 29. Amazon S3存储桶子对象REST和不带SDK的Java
- 30. Amazon S3存储桶策略
2年以上后,目前仍是完美的解决方案!谢谢:) – hardba11 2014-04-24 18:55:12
完美答案... – 2014-06-09 18:54:12
您的第二个链接现在已被破解(迭代通过多页结果),并可在此处找到:http://docs.aws.amazon.com/AmazonS3/latest/dev/ ListingObjectKeysUsingNetSDK.html – adamdport 2014-09-03 15:15:21