列出以子域名命名的存储桶上的所有S3对象

时间:2015-01-19 03:46:28

标签: python amazon-web-services amazon-s3 boto knox-amazon-s3-client

我需要一个带有特定前缀的s3存储桶中所有对象的完整列表。我尝试使用前面提到的使用botoknox-copy的解决方案,但是,我的存储桶是以域名命名的(例如:cdn.mycompany.com),我从boto获得了以下错误

ssl.CertificateError: hostname 'cdn.mycompany.com.s3.amazonaws.com' doesn't match either of '*.s3.amazonaws.com', 's3.amazonaws.com'

我从knox-copy那里得到了类似的错误。如果我使用没有句点的存储桶名称,两者都可以正常工作。有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

使用python 2.7.9和2.7.10会发生这种情况。 我找到了2个解决方法。

将python版本更改为2.7.8

添加〜/ .boto文件(如果没有则创建)以下

  

[s3]

     

calling_format = boto.s3.connection.OrdinaryCallingFormat

     

S3Connection.DefaultHost ='s3-ap-northeast-1.amazonaws.com'

答案 1 :(得分:0)

我设法使用Lyke发布的AWS-CLI解决方案获取我的列表: Quick way to list all files in Amazon S3 bucket?

我以前避免使用CLI,因为我认为它只会返回1000个对象。但是,它成功地列出了我的桶中的所有2000多个项目。