在django-storages中将Amazon S3与基于欧洲的存储桶一起使用时遇到的麻烦

时间:2019-06-09 09:24:06

标签: django amazon-web-services amazon-s3

有关欧盟的Amazon S3存储桶的问题。

我有一个本地托管的Django项目,并决定将媒体文件存储在Amazon S3存储桶中。为此,我将Django-storages应用程序与settings.py中的以下设置结合使用:

AWS_ACCESS_KEY_ID = "xxxxxxx"
AWS_SECRET_ACCESS_KEY = "xxxxxxxxxx"
AWS_STORAGE_BUCKET_NAME = 'hadcasetest'

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

MEDIA_URL = 'http://' + AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com/'


THUMBNAIL_DEFAULT_STORAGE = DEFAULT_FILE_STORAGE
THUMBNAIL_BASEDIR = "thumbnails"
THUMBNAIL_MEDIA_URL = MEDIA_URL

好吧,当我使用美国地区的水桶时,它会起作用,而当我使用欧洲地区的水桶时,它不会起作用。我尝试了欧洲所有可能的地点-它们都无法使用。

我得到的错误类型:S3ResponseError: 400 Bad Request

问题是我应该如何更改才能通过Django -storages访问基于欧洲的存储桶,以便在Django应用中使用它们?

P.S。我甚至可以使用AWS CLI在每个存储桶中进行写操作,即使在欧洲也可以,但是Django存储不能。

也许我应该获得特定的欧盟证书?

1 个答案:

答案 0 :(得分:0)

我在settings.py中添加了这些参数,它有帮助:

AWS_S3_HOST = "s3.eu-central-1.amazonaws.com"
S3_USE_SIGV4 = True
AWS_S3_REGION_NAME = "eu-central-1"