如何使用 Boto3 从给定的 S3 列表中列出每个存储桶的对象数?

基克曼26

我有一个 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
]
匿名懦夫

通过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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 Boto3 从 S3 存储桶创建选定对象的列表

如何检查 S3 存储桶中的对象在 boto3 中是否公开?

Amazon S3 boto3如何遍历存储桶中的对象?

如何使用boto3从特定对象开始遍历s3存储桶?

列出使用Python和Boto3的S3存储桶的目录内容吗?

使用boto3检查s3中存储桶中是否存在密钥

如何使用 Python Boto3 获取 S3 存储桶的总数

如何使用lambda函数和boto3从s3存储桶读取csv文件?

使用boto3,Python从S3存储桶中查找最新的CSV文件

如何在python中使用boto3从给定文件路径的s3下载文件

使用 boto3 和 python 列出 s3 存儲桶

可以使用boto3获得S3存储桶使用的带宽吗?

Python AWS Boto3:如何从S3存储桶读取文件?

演示如何使用boto3从S3存储桶中删除一个或多个特定密钥

如何使用pyspark和boto3检查S3存储桶中是否存在特定目录

无法使用 python boto3 模块连接到 nexrad aws s3 存储桶

boto3:使用 IAM 角色的 S3 存储桶放置事件通知失败

使用boto3从S3存储桶下载文件时出现ValueError吗?

使用 boto3 清空 s3 存储桶的最快方法是什么?

使用Boto3从S3存储桶读取文件内容

使用Boto3将文件上传到带前缀的S3存储桶

使用boto3访问其他AWS用户S3存储桶

如何使用boto3将文件或数据写入S3对象

如何使用boto3将S3对象保存到文件

使用boto3,如何将公共可读对象放入S3(或DigitalOcean Spaces)

如何使用带有boto3库的Version从s3获取对象?

如何使用boto3仅检索S3中的last_modified键

如何使用 boto3 在 Python 中访问 AWS S3 Bucket

如何使用Java检查给定的S3存储桶中是否存在指定的密钥