2016-11-22 76 views
0

虽然我的文件上传工作正常,但我无法让他们使用AWS S3进行生产。目前我得到的403错误:Django媒体存储与亚马逊403错误

S3ResponseError: 403 Forbidden 

我可以看到在我的AWS IAM用户访问密钥ID,我得到当Django应用程序试图连接记录最后的访问。

但是当我测试的凭据:

>>> import boto 
>>> s3 = boto.connect_s3('access_key', 'secret_key') 
>>> bucket = s3.get_bucket('mybucket') 

然后我也得到一个403禁止访问错误,但是由于某些原因,最后的访问记录没有出现在AWS IAM dahboard,这使我认为测试不起作用的原因?


common.py设置:

MEDIA_ROOT = str(APPS_DIR('media')) 
MEDIA_URL = '/media/' 

生产设置:

AWS_ACCESS_KEY_ID = env('DJANGO_AWS_ACCESS_KEY_ID') 
AWS_SECRET_ACCESS_KEY = env('DJANGO_AWS_SECRET_ACCESS_KEY') 
AWS_STORAGE_BUCKET_NAME = env('DJANGO_AWS_STORAGE_BUCKET_NAME') 
AWS_AUTO_CREATE_BUCKET = True 

from storages.backends.s3boto import S3BotoStorage 
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media') 
DEFAULT_FILE_STORAGE = 'config.settings.production.MediaRootS3BotoStorage' 

MEDIA_URL = 'https://s3.amazonaws.com/%s/' % AWS_STORAGE_BUCKET_NAME 

AWS环境vairables在Heroku的设置。

通过上传完成:

class Bill(models.Model): 
    service = models.ForeignKey(UserService 
    bill = models.FileField(upload_to='bills', validators=[validate_file_extension]) 
+0

听起来像一个权限问题。检查您的IAM权限和S3存储桶策略。 –

+0

请注意,除了Users-> Security Credentials外,如何检查IAM权限 - 访问密钥和密钥inthere是我用来测试的。存储区权限看起来不错列表,Uplod/Delete,查看权限和编辑权限已授予用户(我),这是我使用的访问密钥和密钥。 – Yunti

回答

0

date ; sudo service ntp stop ; sudo ntpdate -s time.nist.gov ; sudo service ntp start ; date

运行此命令一次,如果签名是无效的,那么AWS将抛出403 我有同样的问题早。