'foo.bar.com.s3.amazonaws.com'与'* .s3.amazonaws.com','s3.amazonaws.com'都不匹配

Nik*_*oit 3 django amazon-s3 boto amazon-web-services

我正在使用django,并且将imgs之类的东西存储在s3中(为此,我正在使用boto),但是最近我遇到了此错误:

'foo.bar.com.s3.amazonaws.com'与'* .s3.amazonaws.com','s3.amazonaws.com'都不匹配

我正在寻找可能的解决方案大约两天,但是建议的唯一方法是更改​​boto的源代码,但是我不能在生产中这样做。

编辑:使用Django 1.58,Boto 2.38.0

任何帮助,将不胜感激。提前谢谢。

ECC*_*ECC 5

如前所述,问题出现在名称上包含点的存储桶中。下面只是一个防止这种情况的示例。

import boto
from boto.s3.connection import VHostCallingFormat

c = boto.connect_s3(aws_access_key_id='your-access-key',
                    is_secure=False,
                    aws_secret_access_key='your-secret-access',
                    calling_format=VHostCallingFormat())
b = c.get_bucket(bucket_name='your.bucket.with.dots', validate=True)
print(b)
Run Code Online (Sandbox Code Playgroud)

  • FWIW,“VHostCallingFormat”对我不起作用(写入 s3 时得到 403),但同一模块中的“OrdinaryCallingFormat”却起作用。 (2认同)