aws s3 ls 的 boto3 等价物是什么?
What is the boto3 equivalent of aws s3 ls?
我正在尝试使用 boto3 复制命令 aws s3 ls s3://bucket/prefix/
。目前,我可以使用
获取路径中的所有对象
s3 = boto3.client('s3')
bucket = "my-bucket"
prefix = "my-prefix"
paginator = s3.get_paginator('list_objects_v2')
page_iterator = paginator.paginate(Bucket=bucket, Prefix = prefix)
然后,我可以遍历 page_iterator 并手动重建该路径中的顶级目录。但是,由于路径中有大量对象,检索所有对象以重建此命令的结果对我来说大约需要 30 秒,而 AWS CLI 命令几乎是即时的。有没有更有效的方法来做到这一点?
您应该使用 list_objects_v2
的 Delimiter
选项将具有共同前缀的任何对象组合在一起。这基本上就是 aws s3 ls
在没有 --recursive
开关的情况下所做的:
import boto3
s3 = boto3.client('s3')
bucket = "my-bucket"
prefix = "my-prefix"
paginator = s3.get_paginator('list_objects_v2')
# List all objects, group objects with a common prefix
for page in paginator.paginate(Bucket=bucket, Prefix=prefix, Delimiter="/"):
# CommonPrefixes and Contents might not be included in a page if there
# are no items, so use .get() to return an empty list in that case
for cur in page.get("CommonPrefixes", []):
print("<PRE> " + cur["Prefix"])
for cur in page.get("Contents", []):
print(cur["Size"], cur["Key"])
我正在尝试使用 boto3 复制命令 aws s3 ls s3://bucket/prefix/
。目前,我可以使用
s3 = boto3.client('s3')
bucket = "my-bucket"
prefix = "my-prefix"
paginator = s3.get_paginator('list_objects_v2')
page_iterator = paginator.paginate(Bucket=bucket, Prefix = prefix)
然后,我可以遍历 page_iterator 并手动重建该路径中的顶级目录。但是,由于路径中有大量对象,检索所有对象以重建此命令的结果对我来说大约需要 30 秒,而 AWS CLI 命令几乎是即时的。有没有更有效的方法来做到这一点?
您应该使用 list_objects_v2
的 Delimiter
选项将具有共同前缀的任何对象组合在一起。这基本上就是 aws s3 ls
在没有 --recursive
开关的情况下所做的:
import boto3
s3 = boto3.client('s3')
bucket = "my-bucket"
prefix = "my-prefix"
paginator = s3.get_paginator('list_objects_v2')
# List all objects, group objects with a common prefix
for page in paginator.paginate(Bucket=bucket, Prefix=prefix, Delimiter="/"):
# CommonPrefixes and Contents might not be included in a page if there
# are no items, so use .get() to return an empty list in that case
for cur in page.get("CommonPrefixes", []):
print("<PRE> " + cur["Prefix"])
for cur in page.get("Contents", []):
print(cur["Size"], cur["Key"])