- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 django-storages (1.1.4) 的 boto (2.2.1) 后端将文件上传到 S3 存储桶。它适用于图像,但当我尝试上传电影文件(小 mov、小 avi)或 mp3 时,我收到“管道损坏”错误。
这很奇怪。
深入研究 Django 回溯,我看到以下异常:
boto.https_connection.InvalidCertificateException
这符合我使用 Cyberduck 直接检查存储桶的体验:有时它会提示我的 *.s3.amazonaws.com
证书不匹配和域 *.s3-external-3.amazonaws.com
事实上,存储桶日志记录显示我正在接受 HTTP 307 临时重定向。 AWS 是否可能以一种方式发送某些内容类型,而以另一种方式发送其他内容类型,但 boto/something 无法完全跟上?电影的上传似乎确实击中了 S3 两次,而图像则击中了一次,因此 boto 很可能正在应对 307 罚款(boto 中 307 支持的封闭票据已经有几年了),因此它可以好吧,还有其他事情发生。
但是什么?我从愉快而富有成效的一天变成了低谷,这非常令人沮丧。
对于可能发生的情况和/或尝试解决此问题有什么建议吗?
(请注意,这对于 boto S3 后端或简单的 S3 后端会失败 - 只是 boto 给了我看起来更具体的错误)
最佳答案
我将其写为答案,因为它太长,无法容纳评论。它并不能真正回答您的问题,但也许可以帮助您找到答案。
您收到的 307 重定向正在发生,因为存储桶位于 eu-west-1 中,但您正在访问标准 s3.amazonaws.com 端点。 S3 使用一些 DNS 魔法和 HTTP 重定向将流量从通用 S3 端点路由到正确的区域端点。
为了实现此目的,大多数 S3 客户端使用“子域”引用方案,将存储桶名称添加到请求中的主机名前面。因此,如果您尝试访问您的存储桶,则请求中的 Host header 在 boto 中默认为 foofoofoo-bar.s3.amazonaws.com,然后使用 DNS 魔法和 HTTP 重定向,S3 最终会获取您的存储桶。请求到正确的地方。这一切都应该在 boto 中自动发生。
如果您的存储桶名称包含“.”,此方法可能会导致问题。因为主机 header 可能是 foofoofoo.bar.s3.amazonaws.com,并且由于 S3 端点上的通配符 SSL 证书仅适用于一级子域,因此存储桶名称中的句点会导致 SSL 证书验证失败.
这就是为什么我问“。”在你的存储桶名称中,但显然这不是问题。您是否可以从日志中提供更多上下文?我想看看证书验证错误之前发生了什么。
关于使用 boto 的 django-storages - 无法上传 mp3,但可以上传图像。另外,还承受着 HTTP 307 的痛苦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119194/
我已经阅读了关于“describe_cluster_snapshots”的解释...... http://docs.pythonboto.org/en/latest/ref/redshift.html
根据 DynamoDB 文档,如果使用受支持的 SDK,导致数据库节流的请求会自动重试。但是,我找不到任何关于 boto 如何处理节流情况的提及。 boto 会自动重试受限请求还是我应该开始捕获 Pr
有没有办法在 SQS 队列中设置消息的消息属性?我正在尝试检查发送到 SQS 队列的消息并更改其值。下面代码的最后一行获取并打印该值。 for message in queue.receive_mes
我无法从文档/示例中确定如何使用 boto 的 dynamodb2 从 DynamoDB 存储/读取二进制数据。它是如何完成的? 我的猜测是项目值类似于 { 'B': binary-data }但这会
我想获取 dynamodb 表的唯一哈希键值列表。我目前知道的唯一方法是扫描整个表,然后迭代扫描。什么是更好的方法? 最佳答案 rs = list(table.scan(range__eq="rang
我正在使用 boto 访问 dynamodb 表。一切顺利,直到我尝试执行扫描操作。 我尝试了在互联网上反复搜索后发现的几种语法,但没有成功: def scanAssets(self, asset):
我正在使用 Boto 库与 AWS 通信。我想禁用日志记录。 (或重定向到/dev/null 或其他文件)。我找不到明显的方法来做到这一点。我试过了,但这似乎没有帮助: import boto bot
这是我尝试将文档上传到云搜索的代码 from boto.cloudsearch2.layer2 import Layer2 conn_config = { 'region': 'us-east
我已经尝试过: connection = S3Connection( aws_access_key_id=settings.AWS_ACCESS_KEY_ID, aws_secret_
我正在编写一个脚本,以确保我们所有的 EC2 实例都有 DNS 条目,并且所有 DNS 条目都指向有效的 EC2 实例。 我的方法是尝试获取我们域的所有资源记录,以便在检查实例名称时可以遍历列表。 但
查看 boto 文档,当您将消息标识符从 SQS 队列中取出时,我没有看到获取消息标识符的方法。谁能提供一些有关我如何获取这些信息的信息? 最佳答案 Message实例应该有一个名为 id 的属性其中
我的python程序的第一行是from boto.s3.connection import S3Connection . 当我执行程序时,输出是“from: can't read/var/mail/b
我在使用 DynamoDB2 API 使用 boto 2.9.5 执行任何单个或批处理查询时遇到问题 我需要做一个这样的批量查询: one_org = Table('[table-name]').ba
我的网站正在使用 Django+Gunicorn+GEvent。 有一个功能,我必须将 Boto 用于 DynamoDB。 我需要调用monkey.patch_all() 来让Boto 变成green
我不断从包含在结构任务中的 boto create_launch_configuration() cmd 返回此错误。 这是命令: if user_data != '': security_group
我想使用 boto 获取 LoadBalancer 上的所有实例,我该如何实现? 这是我到目前为止所得到的: import boto from boto.regioninfo import Regio
标题已经说明问题了。 我正在请求一个带有 boto 的 Spot 实例,如下所示(aws key 和 secret key 是 ~/.boto 中设置的环境变量): import boto conn
我有一个我注册为亚马逊开发者的账户。 (我们称其为 developer 帐户) 我有另一个账户,我将其视为卖家账户(也是亚马逊开发者账户)。 (我们称此为seller 帐户) 我希望我的开发者帐户代表
如果存储桶名称有大写字母,我将无法连接到存储桶。 我有几个桶,里面有大写字母。 >>> mybucket = conn.get_bucket('Vig_import') Traceback (most
Boto在AWS上下文中代表什么?选择api名称似乎是一个随意的单词。是缩写吗?我已尝试使用Google搜索功能,但未发现其含义。 最佳答案 Boto的名称源于对亚马逊河原生海豚类型的葡萄牙语名称。
我是一名优秀的程序员,十分优秀!