当前位置: 首页 > 面试题库 >

在Heroku上使用Boto时,无法连接名称中带有句点的S3存储桶

樊烨烨
2023-03-14
问题内容

尝试使用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客户端的证书检查



 类似资料:
  • 如果我能知道根本原因是什么就好了。

  • 问题内容: 我想使用python复制s3存储桶中的文件。 例如:我的存储桶名称=测试。在存储桶中,我有2个文件夹名称为“ dump”和“ input”。现在,我想使用python将文件从本地目录复制到S3“转储”文件夹…有人可以帮助我吗? 问题答案: 尝试这个… [更新]我不是pythonist,所以感谢您对import语句的注意。另外,我不建议将凭证放在您自己的源代码中。如果您在AWS内部运行此

  • 问题内容: 我正在尝试从XML提取一些数据,但是当我执行以下命令时,我得到了一个 警告:为…中的foreach()提供了无效的参数 代码示例: 对于单个单词的节点名称,它可以很好地工作,所以我猜它不喜欢连字符。我需要逃脱吗? 问题答案: 从PHP 手册: 访问XML文档中包含PHP命名约定不允许的字符的元素(例如,连字符)可以通过将元素名称封装在花括号和撇号中来实现。 您的情况是:

  • 我有一个功能,检查是否存在图像文件。它适用于所有图像,除非文件名中有句点。文件名是用户上传的,许多文件名已经存在,但没有经过清理。这里有一个例子: 我不知道如何逃避或使它工作。我已经检查了两次,文件确实存在于该路径。该函数适用于同一文件夹中的其他图像名称。 编辑:这被标记为重复,并链接到一个关于上传文件的问题。我使用is_file()来检查文件是否已经存在。没有发生上载,文件在服务器上的名称中已经

  • 我正在使用和遇到了一个奇怪的错误。 我最初的IAM策略非常保守,只包括对象的get、put和delete。 -- 然后我授予了除删除和创建bucket之外的所有权限 -- 我终于给了完全权限,我想避免,我不再得到403错误。 我已经尝试根据此答案提供对桶根和的访问权限 我的目标是只授予必要的权限。

  • 问题内容: 更新宝石并将所有产品投入生产后,我在Heroku上启动sidekiq遇到了很大的问题。问题是,Sidekiq尝试在本地连接和端口上连接到Redis,而不是使用REDISTOGO变量。花了几个小时后,我设法解决了:请在下面回答。 问题答案: 从if和下面删除所有内容,然后运行: Sidekiq将自动使用它。

  • 我一直试图在一个使用https的站点上实现ajax上传到AmazonS3,所以当然我也必须上传到S3的安全版本https://bucket.name.S3.amazonaws.com。但是,当我尝试此上载时,我最终得到一个错误,即站点具有无效的安全证书。从我读到的内容来看,这是意料之中的,因为Amazon的s3证书只覆盖一级子域(http://shlomoswidler.com/2009/08/A

  • 我尝试使用s3存储用户的上传文件,我使用django存储 pip安装django存储 加进了我的INSTALLED_APPS 已安装的应用程序=( 。。。 '存储', ) 在设置中设置变量。py公司 DEFAULT_FILE_STORAGE='storages.backends.s3boto. s3BotoStorage' AWS\u ACCESS\u KEY\u ID=“\\\\\\\\\\\\