亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AWS 上 ListObjects 操作的限制

AWS 上 ListObjects 操作的限制

Go
一只萌萌小番薯 2022-10-17 19:42:08
我正在瀏覽AWS 開發工具包中的函數文檔。ListObjectsgo(對于實際的API 端點或多或少同樣適用)所以文檔寫道:返回存儲桶中的部分或全部(最多 1,000 個)對象。這是什么意思?如果我的存儲桶有 200.000 個對象,此 API 調用將不起作用?此示例使用ListObjectsPages(在后臺調用ListObjects)并聲稱列出所有對象。這里的實際情況是什么?
查看完整描述

2 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

我正在瀏覽 AWS 的 go SDK 中的 ListObjects 函數的文檔。

使用 ListObjectsV2。它的行為或多或少相同,但它是 ListObjects 的更新版本。AWS 更新 API 并不是很常見,而當他們這樣做時,通常是有充分理由的。他們非常擅長向后兼容,這就是ListObjects仍然存在的原因。

此示例使用 ListObjectsPages(在后臺調用 ListObjects)并聲稱列出所有對象。

ListObjectsPages是 , 的分頁等價物ListObjects,對于V2我將在下面描述的版本也是如此。

許多 AWS API 響應是分頁的。AWS 使用光標分頁;這意味著請求響應包括一個游標——ContinuationToken在 ListObjectsV2 的情況下。如果存在更多對象(IsTruncated在響應中),則后續ListObjectsV2 請求內容可以提供 ContinuationToken以繼續第一個響應停止的列表。

ListObjectsV2Pages為您處理迭代ListObjectsV2請求,因此您不必處理ContinuationTokenand的邏輯IsTruncated。相反,您提供了一個將為響應中的每個“頁面”調用的函數。

所以說ListObjectsV2Pages將列出“所有”對象是準確的,但是因為它在后端進行了多次 ListObjectsV2調用,所以它會列出超過一頁的響應。

因此,...Pages函數可以被認為是便利函數。您應該始終在適當的時候使用它們——它們消除了分頁的痛苦,而分頁對于使潛在的大量 api 響應可操作至關重要。在 AWS 中,如果支持分頁,則假設您需要它 - 在典型情況下,不保證結果的第一頁包含任何結果,即使后續頁面包含。


查看完整回答
反對 回復 2022-10-17
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

AWS Go SDK V2為我們提供了分頁器類型,以幫助我們管理 S3 的每次查詢項目限制。ListObjectsV2Pages離開了。取而代之的是ListObjectsV2Paginator,它處理@Daniel_Farrell 提到的分頁細節。


構造函數接受與列表對象查詢 ( ) 相同的參數type ListObjectsV2Input。分頁器公開了 2 個方法:HasMorePages: bool和NextPage: (*ListObjectsV2Output, error).


var items []Item


for p.HasMorePages() {

  batch, err := p.NextPage(ctx)

  // etc...

  item = append(items, newItems...)

}


查看完整回答
反對 回復 2022-10-17
  • 2 回答
  • 0 關注
  • 364 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號