1

我正在尝试将所有 Django 媒体文件(从管理面板上传)上传到 Amazon S3。所以设置文件看起来像这样:

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'tastypie',
'core',
'advertisment',
'storages',

)

  DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
  AWS_ACCESS_KEY_ID = 'xxx' 
  AWS_SECRET_ACCESS_KEY = 'xxx'
  AWS_STORAGE_BUCKET_NAME = 'media'
  MEDIA_URL = 'https://s3.amazonaws.com/%s/' % AWS_STORAGE_BUCKET_NAME

当我尝试从管理面板上传文件时,出现以下错误:

S3ResponseError: 403 Forbidden

我检查了这个答案,但仍然没有帮助

4

1 回答 1

2

您是否安装了boto,因为 django-storage 依赖于 boto ?

然后您必须将以下内容添加到您的 settings.py

import os

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('S3_BUCKET_NAME')

STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

STATIC_URL = 'http://' + AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com/'
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'

然后您的缓存将存储在 AWS S3 本身上。

我希望它有帮助

注意:出于安全原因,最好将您的 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 添加为环境变量,而不是直接将它们写在 setting.py 中。

于 2012-10-15T18:59:19.237 回答