我有一個 s3 存盤桶串列,其中每個物件都有一些物件,我正在嘗試檢索每個存盤桶中的物件數量,我被困在這里:
import boto3
client = boto3.client('s3')
bucket_list = [
'bkt-1',
'bkt-2',
'bkt-3'
]
for objs in bucket_list:
response = client.list_objects_v2(Bucket=bucket_list[0])
objs = response['KeyCount']
print(objs)
但看起來它并沒有遍歷所有串列,它只是給了我串列的第一個桶中的物件數量,并且相同的值是我串列中的專案數量,而不是每個串列中的物件數量桶:
4
4
4
當我需要它時:
[
'bkt-1' 4,
'bkt-2' 2,
'bkt-3' 5
]
uj5u.com熱心網友回復:
通過bucket_list[0]在回圈中使用,您會一遍又一遍地詢問第一個存盤桶的專案串列。此外,您實際上只詢問每個存盤桶的第一頁結果中的專案數。無論存盤桶的大小如何,這永遠不會超過 1000 個專案。如果您想支持更大的存盤桶,您需要正確地對結果進行分頁:
import boto3
client = boto3.client('s3')
# Create a paginator helper for list_objects_v2
paginator = client.get_paginator('list_objects_v2')
bucket_list = [
'bkt-1',
'bkt-2',
'bkt-3'
]
for objs in bucket_list:
# Keep a running total
count = 0
# Work through the response pages, add to the running total
for page in paginator.paginate(Bucket=objs):
count = page['KeyCount']
# Show the bucket name and number of objects
print(objs, count)
uj5u.com熱心網友回復:
代替
client.list_objects_v2(Bucket=bucket_list[0])
它應該是
for bucket in bucket_list:
response = client.list_objects_v2(Bucket=bucket)
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450571.html
下一篇:由于配置錯誤,執行失敗:APIGateway沒有權限承擔提供的角色arn:aws:iam::XXXXXXXXXXXX:role/auth
