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