【问题标题】:django-storages s3 403 forbidden errordjango-storages s3 403禁止错误
【发布时间】:2013-06-27 21:14:02
【问题描述】:

我正在使用 django-storages 将静态文件上传到 AWS S3。我按照教程进行操作,并能够成功上传和检索管理页面的静态文件。

然后我在我的 django 项目中创建了一个静态目录,添加了一些引导文件并运行 collectstatic。我可以看到引导文件都已成功存储到我的 S3 存储桶中。但是,当我尝试运行我的应用程序(本地和 Heroku 上)时,引导文件失败并出现 get 403 禁止错误。

管理文件存储在同一个 S3 存储桶内的管理文件夹中,并且可以毫无问题地检索。什么可能导致这种差异?我是 s3 的新手,所以也许我在那里做错了什么。

我已确认我的 AWS 密钥正常工作。

我的settings.py如下:

AWS_STORAGE_BUCKET_NAME = 'punchline-app'
AWS_PRELOAD_METADATA = True 
STATIC_ROOT = ''
STATIC_URL = 'https://punchline-app.s3.amazonaws.com/static/'
ADMIN_MEDIA_PREFIX = 'https://punchline-app.s3.amazonaws.com/static/admin/'

STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
    os.path.join(PROJECT_DIR,"static"),
)

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

【问题讨论】:

  • 这是管理静态文件之一的正确 URL (punchline-app.s3.amazonaws.com/static/admin/css/base.css) 吗?如果是这样,我会收到权限被拒绝错误。这篇文章也可能有助于阐明涉及 S3 存储桶权限的一些信息:stackoverflow.com/questions/13167493/…
  • 权限看起来不错。我注意到我的存储桶中没有静态文件夹。我已经通过相应地更改我的 STATIC_URL url(从路径中删除“静态”)解决了这个问题。奇怪的是,ADMIN_MEDIA_PREFIX url 在路径中仍然有静态并且它可以工作。

标签: django amazon-s3 django-storage


【解决方案1】:

您的 settings.py 文件中是否有像这样整理的访问密钥?

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')

你是否在heroku中设置了你的环境变量?例如

heroku config:set AWS_ACCESS_KEY_ID='<put your key here>'

【讨论】:

    猜你喜欢
    • 2018-02-28
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 2012-05-20
    • 2021-06-17
    • 2013-05-25
    • 2022-11-08
    • 1970-01-01
    相关资源
    最近更新 更多