使用Python列出IBM COS S3存储桶中的所有键

时间:2018-08-21 18:49:54

标签: python amazon-s3 ibm-cloud object-storage

我希望跟踪存储在cos存储桶中的密钥列表。

我正在使用Python,目前我的代码是:

 files = cos.Bucket('bucketname').objects.all()

 for file in files:
     data[file.key] = 'not processed'
     data_array.append(data)

这对我来说非常慢,因为目前我的存储桶中有很多1M +密钥。

有更好的方法吗?我目前正在查看https://alexwlchan.net/2018/01/listing-s3-keys-redux/

但是我遇到了麻烦,因为在建立连接时ibm-cos-sdk返回s3资源而不是客户机。

任何提示将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用与链接到的代码相似的代码。我能够用这样的代码执行它:

# fetch endpoints
endpoints_list_uri="https://cos-service.bluemix.net/endpoints"
endpoints = requests.get(endpoints_list_uri).json()
cos_host = (endpoints['service-endpoints']['regional']['us-south']['public']['us-south'])

#create client
cos = ibm_boto3.client('s3',endpoint_url='https://'+cos_host)

# retrieve keys from bucket
keys=get_matching_s3_keys(s3=cos,bucket="encryptedbucket1",prefix='mypattern')
for key in keys:
    print key

请注意,我已经修改了两个函数头,以允许传入S3客户端对象。如果有兴趣,我可以将整个源代码放在GitHub等上。