尝试使用Boto连接到我们的S3存储桶时,我们收到证书错误。奇怪的是,这仅在访问名称为WHILE且在Heroku上运行的存储桶时才会显现出来。
from boto.s3.connection import S3Connection
conn = S3Connection({our_s3_key}, {our_s3_secret})
bucket = conn.get_bucket('ourcompany.images')
引发以下错误:
CertificateError:主机名“ ourcompany.images.s3.amazonaws.com”与“ * .s3.amazonaws.com”,“ s3.amazonaws.com”都不匹配
但是,相同的代码在本地运行时效果很好,并且如果存储桶名称是“ ourcompany-images”而不是“ ourcompany.images”,那么在Heroku上也可以使用
根据相关的github问题,将其添加到配置中:
[s3]
calling_format = boto.s3.connection.OrdinaryCallingFormat
或者,calling_format
在实例化时指定S3Connection
:
from boto.s3.connection import OrdinaryCallingFormat
conn = S3Connection(access_key, secret_key, calling_format=OrdinaryCallingFormat())
该代码在本地为您工作,而在heroku上不起作用,这很可能是因为所使用的python版本不同。我怀疑您2.7.9
在heroku上使用了运行时,该运行时已启用了stdlib http客户端的证书检查。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句