- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试在 Amazon S3 上托管我的 Django 静态和媒体文件,并且我一直在遵循所有指南,但最终我仍然在部署时收到 S3ResponseError: 301 Moved Permanently
错误当我的 Elastic Beanstalk 应用程序尝试运行 collectstatic
时。
我的 S3 正在运行,我可以访问其上的其他文件。我还将其设置为自定义域,以便您可以通过以下方式访问同一文件:
这是我想使用的第三个选项,但我也尝试过其他选项。在下面的设置中包含和不包含 https://
。
我的设置文件如下所示
#settings.py file
AWS_ACCESS_KEY_ID = 'XXX'
AWS_SECRET_ACCESS_KEY = 'XXX'
AWS_HEADERS = {
'Expires': 'Thu, 31 Dec 2099 20:00:00 GMT',
'Cache-Control': 'max-age=94608000',
}
AWS_STORAGE_BUCKET_NAME = 's3.condopilot.com'
# I have also tried setting AWS_S3_CUSTOM_DOMAIN to the following:
# - "s3-eu-west-1.amazonaws.com/%s/" % AWS_STORAGE_BUCKET_NAME
# - "s3-eu-west-1.amazonaws.com/%s" % AWS_STORAGE_BUCKET_NAME
# - "s3.condopilot.com"
AWS_S3_CUSTOM_DOMAIN = "%s.s3-eu-west-1.amazonaws.com" % AWS_STORAGE_BUCKET_NAME
AWS_S3_CALLING_FORMAT = 'boto.s3.connection.OrdinaryCallingFormat'
AWS_S3_SECURE_URLS = False # Tried both True and False
AWS_S3_URL_PROTOCOL = 'http' # Tried with and without
STATICFILES_LOCATION = 'static'
STATIC_URL = "http://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, STATICFILES_LOCATION)
STATICFILES_STORAGE = 'custom_storages.StaticStorage'
MEDIAFILES_LOCATION = 'media'
MEDIA_URL = "http://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, MEDIAFILES_LOCATION)
DEFAULT_FILE_STORAGE = 'custom_storages.MediaStorage'
我之所以有 AWS_S3_CALLING_FORMAT = 'boto.s3.connection.OrdinaryCallingFormat'
是因为没有它我会收到以下错误:ssl.CertificateError:主机名“s3.condopilot.com.s3.amazonaws.com”与“*.s3.amazonaws.com”、“s3.amazonaws.com”都不匹配
。我在网上找到的有关该错误的所有建议都表明,当存储桶名称包含点时,应使用 OrdinaryCallingFormat
,例如 s3.condopilot.com
。
我的自定义存储看起来像这样
#custom_storages.py
from django.conf import settings
from storages.backends.s3boto import S3BotoStorage
class StaticStorage(S3BotoStorage):
location = settings.STATICFILES_LOCATION
class MediaStorage(S3BotoStorage):
location = settings.MEDIAFILES_LOCATION
是的,我的 S3 存储桶设置在 eu-west-1 中。
最佳答案
我认为您不需要在 URL 中设置区域 S3,如果您使用 django-storage,请将此应用替换为 django-storages-redux。您不需要 custom_storages.py 文件。
让事情变得简单。这已经足够了。
from django.utils import six
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXXXXXX'
AWS_SECRET_ACCESS_KEY = 'XxXxXxXxXxXxXxXxXxXxXxXxXxXxxXxX'
AWS_STORAGE_BUCKET_NAME = 'bucket-name'
AWS_AUTO_CREATE_BUCKET = False
AWS_QUERYSTRING_AUTH = False
AWS_EXPIRY = 60 * 60 * 24 * 7
AWS_HEADERS = {
'Cache-Control': six.b('max-age=%d, s-maxage=%d, must-revalidate' % (
AWS_EXPIRY, AWS_EXPIRY))
}
MEDIA_URL = 'https://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
STATICFILES_STORAGE = DEFAULT_FILE_STORAGE
STATIC_URL = MEDIA_URL
关于S3 上的 Django 静态文件 : S3ResponseError: 301 Moved Permanently,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29971297/
我正在试验 XML-RPC。 我有以下服务器脚本(Python): from SimpleXMLRPCServer import SimpleXMLRPCServer server = SimpleX
欢迎各位 friend , 我是 Python 的新手。我正在根据一本书构建 Django 应用程序:Django By Example Antonio Mele。简单的商店。不幸的是我有 Respo
有时,我使用的 API 会返回 200 ok即使出现了错误。响应 JSON 对象将类似于: { error: true } 我已经建立了一个 $http response拦截器只是检查这个错误
我创建了一个简单的拦截器来将用户重定向到登录页面,服务器返回 401 错误。但是它不起作用,因为状态被设置为 404,所以 $location 永远不会被调用。 .config( function m
我目前正在使用以下代码重新抛出从我的 API 返回 401 的请求: responseError: function(rejection) { var authData
我希望能够在我的 angularjs 项目中处理 401 状态代码。我尝试了几种不同的响应拦截器变体,但它们都返回代码 -1。我想了解为什么会发生这种情况。使用 Angularjs v1.5.8。 m
我刚刚在 angularJS 中构建了一个拦截器服务来捕获来自 API 调用的所有错误以处理一般错误,如下所示: $provide.factory('myHttpInterceptor', funct
我正在尝试使用 python 在 Redis 中创建一个时间序列,如下所示: import redis connection_redis = redis.Redis(host='127
我正在尝试通过 Flask 使用 Redis 创建服务器端 session 。 Redis-server 似乎运行良好,但 Flask 在实现 example class on Flask 时一直给我
我正在尝试在我的 Flask 应用程序中使用 Celery 进行异步调用。为了完成这次运行,我做了以下工作: 在我的pycharm环境中安装了celery 已安装 redis(来自此处:https:/
我正在 try catch google 在将您锁定在 pytrends 中的服务器之外时抛出的异常。 这是我收到的确切错误消息: File "/usr/local/lib/python3.7/s
当使用 redis-py(版本 2.8.0)时,我遇到了这个奇怪的错误(如下)。有谁知道为什么会发生这种情况? return self.execute_command('GET', name) Fil
documentation提到您可以为拦截器定义 4 个函数,它说: There are two kinds of interceptors (and two kinds of rejection i
我创建了一个包含 30 个实例(15 个主节点/15 个节点)的 Redis 集群。使用 python 代码连接到这些实例,我找到了主人,然后我想给他们添加一些 key 。 def settomast
我在尝试使用以下方法部署谷歌云 HTTP 函数时刚开始遇到错误: gcloud functions deploy http_function --trigger-http 现在我收到这样的错误: ER
我有一个具有 kubernetes 引擎管理员角色的 gcp 服务帐户,我在尝试创建新集群时遇到错误。有什么想法吗? gcloud auth activate-service-account --ke
我有一个具有 kubernetes 引擎管理员角色的 gcp 服务帐户,我在尝试创建新集群时遇到错误。有什么想法吗? gcloud auth activate-service-account --ke
我正在使用 RQ 在我的 django 应用程序中运行后台任务,因为它应该是完成工作的最简单方法之一。该任务包括检查某些 API(如果有任何信息已更新)并将任何新信息插入我自己的数据库。 直到几天前,
我做了什么: 我使用本指南在 jenkins docker 容器上设置了 gcloud: https://firebase.google.com/docs/test-lab/continuous 我要
Google Kubernetes Engine的本教程似乎不起作用。 https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-
我是一名优秀的程序员,十分优秀!