我不知道如何设置 django-storages。所有的方向似乎都不完整或什么的。
我试过了: http: //django-storages.readthedocs.org/en/latest/backends/amazon-S3.html http://blog.doismellburning.co.uk/2012/07/14/using-amazon- s3-to-host-your-django-static-files/ 和其他几个我现在找不到的。
我不知道如何设置 django-storages。所有的方向似乎都不完整或什么的。
我试过了: http: //django-storages.readthedocs.org/en/latest/backends/amazon-S3.html http://blog.doismellburning.co.uk/2012/07/14/using-amazon- s3-to-host-your-django-static-files/ 和其他几个我现在找不到的。
这是我为同事制作的设置清单。
settings_local.py
。仍然在 IAM 中,设置用户访问权限:
{
"Version": "2013-08-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": ["*"]
}
]
}
此策略允许访问用户组的所有存储桶:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::*"
},
{
"Action": [
"cloudfront:*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
现在,存储桶已设置,用户可以访问它。您可以尝试从 Django 设置和测试对存储桶的访问。
安装以下软件包:
django-storages==1.1.8
boto==2.9.7
我添加了此代码以settings_local.py
不将其公开给查看提交的人:
USE_AMAZON = False # Set this to True when ready
STATIC_URL = 'your-bucket-s3-url'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXXXXXXX'
AWS_SECRET_ACCESS_KEY = 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY'
AWS_STORAGE_BUCKET_NAME = 'your-bucket-name'
此代码转到settings.py
:
from settings_local import *
if USE_AMAZON:
BASE_MEDIA_URL = 'static'
MEDIA_URL = '/media/'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATIC_ROOT = os.path.join(settings.BASE_PATH, 'static')
MEDIA_ROOT = os.path.join(settings.BASE_PATH, 'old_media')
STATICFILES_DIRS = (
('img', os.path.join(STATIC_ROOT, 'img'),
('js', os.path.join(STATIC_ROOT, 'js'),
)
INSTALLED_APPS += (
'django.contrib.staticfiles',
'storages',
)
转到 AWS S3 部分并获取存储桶的 url,将其粘贴到设置文件中,并STATIC_URL
进行相应设置。
将凭据中的密钥粘贴到 settings_local.py 中。现在 Django 应该可以将静态文件上传到存储中了。
运行此命令:
$ uenv/bin/python your_project/manage.py collectstatic
如果它上传文件,那么一切都是正确的。如果不是,请检查错误消息。
pyflakes your_project/settings*.py
)。只是为了检查文件是否可以从 Web 访问,请将存储桶的 S3 Web url 粘贴到 STATIC_URL 中。运行 Django 并查看 statc 资产的来源。
如果您想要 CloudFront,则需要更多步骤。
在 AWS 中,转到服务 > 存储和内容交付 > CloudFront。创建一个分布。分发就像一个可以访问文件夹的虚拟 Web 服务器。
选择:
转到新的分发设置并复制域名。将其粘贴STATIC_URL
到settings_local.py
文件中。CloudFront 中的 newSTATIC_URL
不应包含存储桶名称,因为此域名专门用于该存储桶。
这个 URL 是一个敏感数据,因为访问它会花费你真正的金钱并且比本地开发服务器慢,所以它可能不应该在开发环境中运行。
希望这可以帮助。