获取所有可用的存储桶并打印,但仅限于存储桶名称

问题描述 投票:2回答:2

我显示所有可用的桶,代码如下,我有这个结果:

<Bucket: test>

但是你知道它是否可能只有这个结果(没有<Bucket...>,像这样:

测试

import boto
from boto.s3.connection import S3Connection
s3 = boto.connect_s3()  
buckets = s3.get_all_buckets() 
for key in buckets:
    print key
python amazon-s3 boto
2个回答
6
投票
import boto
from boto.s3.connection import S3Connection
s3 = boto.connect_s3()  
buckets = s3.get_all_buckets() 
for key in buckets:
    print key.name

这应该工作.. key.name


1
投票

我今天写了这个示例代码,测试了一些东西......你可能会发现它也很有帮助。这假定您有权执行S3功能或列出特定存储桶:

import boto3
import time
import sys

print ("S3 Listing at %s" % time.ctime())
s3 = boto3.client('s3');

def showSingleBucket( bucketName ):
  "Displays the contents of a single bucket"
  if ( len(bucketName) == 0 ):
    print ("bucket name not provided, listing all buckets....") 
    time.sleep(8)
  else:
    print ("Bucket Name provided is: %s" % bucketName)
    s3bucket = boto3.resource('s3')
    my_bucket = s3bucket.Bucket(bucketName)
    for object in my_bucket.objects.all():
      print(object.key)
  return

def showAllBuckets():
  "Displays the contents of S3 for the current account"
  try:
    # Call S3 to list current buckets
    response = s3.list_buckets()
    for bucket in response['Buckets']:
      print (bucket['Name']) 
  except ClientError as e:
    print("The bucket does not exist, choose how to deal with it or raise the exception: "+e)
  return

if ( len(sys.argv[1:]) != 0 ):
  showSingleBucket(''.join(sys.argv[1]))
else:
  showAllBuckets()
© www.soinside.com 2019 - 2024. All rights reserved.