使用boto库获取AWS S3存储桶名称并输出为纯字符串列表的方法
解决方案
目前boto和boto3都没有原生接口可以直接返回仅由存储桶名称组成的列表,都需要从接口返回的桶元数据中提取名称字段,以下是具体实现方案:
基于你当前使用的boto库实现
你调用conn.get_all_buckets()返回的是S3 Bucket对象的列表,每个对象的name属性就是存储桶的名称,直接通过列表推导式提取即可,修改后的代码如下:
import boto from boto.s3.key import Key import boto.s3.connection from __future__ import print_function ACCESS_KEY_ID ='****' SECRET_ACCESS_KEY ='****' conn = boto.s3.connect_to_region('us-**', aws_access_key_id=ACCESS_KEY_ID, aws_secret_access_key=SECRET_ACCESS_KEY) # 直接提取所有桶的名称 bucket_names = [bucket.name for bucket in conn.get_all_buckets()] print(bucket_names)
运行后输出就是你需要的仅包含名称的列表:
['aaaa', 'bbbb']
推荐使用boto3的实现方案
boto库已经停止官方维护,更推荐使用boto3完成该需求,示例代码如下:
import boto3 ACCESS_KEY_ID ='****' SECRET_ACCESS_KEY ='****' s3 = boto3.client( 's3', region_name='us-**', aws_access_key_id=ACCESS_KEY_ID, aws_secret_access_key=SECRET_ACCESS_KEY ) response = s3.list_buckets() bucket_names = [bucket['Name'] for bucket in response['Buckets']] print(bucket_names)
内容的提问来源于stack exchange,提问作者rgzv
相关产品推荐
相关产品推荐

