获取给定前缀的所有 s3 存储桶
Get all s3 buckets given a prefix
目前我们有多个带有应用程序前缀和区域后缀的存储桶
例如存储桶名称
- myapp-us-east-1
- myapp-us-west-1
有没有办法找到给定特定前缀的所有桶?有没有类似的东西:
s3 = boto3.resource('s3')
buckets = s3.buckets.filter(Prefix="myapp-")
当您从 S3 服务检索存储桶列表时,您正在对 S3 服务使用 GET /
操作。
文档:
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTServiceGET.html
此函数不接受任何请求参数,因此没有在服务器端完成过滤。
如果您想根据所需前缀进行过滤,则需要检索整个存储桶列表,然后自行过滤。
高级集合 s3.buckets.filter(Filters=somefilter)
仅适用于 describe_tags
过滤器(列表)下的文档方式。在这种情况下,您必须先标记您的存储桶 (s3.BucketTagging
),然后才能使用非常具体的过滤方法 s3.buckets.filter(Filters=formatted_tag_filter)
(http://boto3.readthedocs.org/en/latest/reference/services/ec2.html#EC2.Client)
恕我直言,如果您计划管理 AWS 内的任何资源,则必须进行标记。
目前,您可以这样做
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
if bucket.name.startswith("myapp-"):
print bucket.name
以下是过滤掉 KEYS(不是桶)的示例代码
(http://boto3.readthedocs.org/en/latest/guide/collections.html)
# S3 list all keys with the prefix '/photos'
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
if bucket.name.startswith("myapp-") :
for obj in bucket.objects.filter(Prefix='/photos'):
print('{0}:{1}'.format(bucket.name, obj.key))
上面的例子有一条警告:
Warning
Behind the scenes, the above example will call ListBuckets
, ListObjects
, and HeadObject
many times. If you have a large number of S3 objects then this could incur a significant cost.
目前我们有多个带有应用程序前缀和区域后缀的存储桶 例如存储桶名称
- myapp-us-east-1
- myapp-us-west-1
有没有办法找到给定特定前缀的所有桶?有没有类似的东西:
s3 = boto3.resource('s3')
buckets = s3.buckets.filter(Prefix="myapp-")
当您从 S3 服务检索存储桶列表时,您正在对 S3 服务使用 GET /
操作。
文档: http://docs.aws.amazon.com/AmazonS3/latest/API/RESTServiceGET.html
此函数不接受任何请求参数,因此没有在服务器端完成过滤。
如果您想根据所需前缀进行过滤,则需要检索整个存储桶列表,然后自行过滤。
高级集合 s3.buckets.filter(Filters=somefilter)
仅适用于 describe_tags
过滤器(列表)下的文档方式。在这种情况下,您必须先标记您的存储桶 (s3.BucketTagging
),然后才能使用非常具体的过滤方法 s3.buckets.filter(Filters=formatted_tag_filter)
(http://boto3.readthedocs.org/en/latest/reference/services/ec2.html#EC2.Client)
恕我直言,如果您计划管理 AWS 内的任何资源,则必须进行标记。
目前,您可以这样做
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
if bucket.name.startswith("myapp-"):
print bucket.name
以下是过滤掉 KEYS(不是桶)的示例代码 (http://boto3.readthedocs.org/en/latest/guide/collections.html)
# S3 list all keys with the prefix '/photos'
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
if bucket.name.startswith("myapp-") :
for obj in bucket.objects.filter(Prefix='/photos'):
print('{0}:{1}'.format(bucket.name, obj.key))
上面的例子有一条警告:
Warning Behind the scenes, the above example will call
ListBuckets
,ListObjects
, andHeadObject
many times. If you have a large number of S3 objects then this could incur a significant cost.