我正在嘗試獲取給定 Amazon S3 客戶端的存盤桶和前綴中的物件串列。有人建議我使用以下代碼,它似乎運行良好,但我不明白為什么。我真的一點都不熟悉 AWS 和 S3。誰能讓我明白ContinuationToken,NextContinuationToken的含義以及這個運算式的含義
request.ContinuationToken = response.NextContinuationToken;
請在下面的代碼中?
提前致謝!
ListObjectsV2Request request = new ListObjectsV2Request
{
BucketName = bucketName,
Prefix= prefixName
};
ListObjectsV2Response response;
do
{
response = await client.ListObjectsV2Async(request);
// Process the response.
foreach (S3Object entry in response.S3Objects)
{
Console.WriteLine("key = {0} size = {1}",
entry.Key, entry.Size);
}
Console.WriteLine("Next Continuation Token: {0}", response.NextContinuationToken);
request.ContinuationToken = response.NextContinuationToken;
} while (response.IsTruncated);
uj5u.com熱心網友回復:
許多 AWS 的 api 是分頁的,這意味著它們只回傳例如 1000 個結果,如果您想要更多結果,您需要第二個 api 呼叫,告訴他們您想要接下來的 1000 個結果。
告訴 API “我想要下 1000 個”結果的方法是指定 NextToken、PageToken、ContinuationToken,...... API 之間的令牌名稱不同,但概念保持不變。
代碼所做的是改變請求,將 設定ContinuationToken為 API 當前回應的令牌。這樣,在下一次回圈迭代期間,API 知道要發送給您的 1000 個下一個結果。如果要獲取更多結果,API 將回應不同的NextContinuationToken. 沖洗并重復,直到 API 最終將IsTruncated標志設定為false意味著沒有更多結果要獲取。
uj5u.com熱心網友回復:
讓我們看一下檔案。快速搜索“S3 NextContinuationToken”會產生此頁面:
下一個繼續令牌
當 isTruncated 為 true 時發送 NextContinuationToken,這意味著桶中有更多可以列出的鍵。可以使用此 NextContinuationToken 繼續對 Amazon S3 的下一個串列請求。NextContinuationToken 被混淆了,不是真正的密鑰。
因此,您有一個存盤桶,其中包含更多可以放入單個回應的鍵。您需要發出多個請求來獲取所有密鑰。每個回應都會為您提供一個標記,指示該回應在哪里完成,以及下一個回應應該從哪里開始。
通過傳遞NextContinuationToken到下一個請求,您是在告訴 AWS API 您希望下一個回應從上一個回應中斷的地方開始。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/439507.html
上一篇:如何替換字串中的所有無效字符?
