使用 Python 列出 IBM COS S3 存储桶中的所有密钥
Listing all keys in a IBM COS S3 bucket using Python
我希望跟踪存储在 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 returns 是 s3 资源而不是客户端。
如有任何提示,我们将不胜感激。
您可以使用与链接到的代码类似的代码。我能够用这样的代码执行它:
# 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
请注意,我已经修改了两个函数 headers 以允许传入 S3 客户端 object。如果有兴趣,我可以把整个源代码放在GitHub等
我希望跟踪存储在 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 returns 是 s3 资源而不是客户端。
如有任何提示,我们将不胜感激。
您可以使用与链接到的代码类似的代码。我能够用这样的代码执行它:
# 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
请注意,我已经修改了两个函数 headers 以允许传入 S3 客户端 object。如果有兴趣,我可以把整个源代码放在GitHub等