Django & AWS S3 Storage
AWS Set Up
Create & Set Up A User
- IAM -> Users -> [User Name] -> Permissions
-> Attach polity directly (AmazonS3FullAccess) OR Add user to a group with AmazonS3FullAccess
- IAM -> Users -> [User Name] -> Security credentials -> Create access key -> Application running outside AWS
- Write down 'Access key' & 'Secret access key' for later usage
Create & Set Up A S3 Bucket
Amazon S3 -> Buckets -> [Bucket Name] -> Permissions -> Bucket policy (Edit)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicRead",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[Bucket Name]/*"
}
]
}
Django Set Up
pip install django-storages boto3
# settings.py
AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = config('AWS_STORAGE_BUCKET_NAME')
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.ap-northeast-1.amazonaws.com'
AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
# AWS_DEFAULT_ACL = None
AWS_DEFAULT_ACL = 'public-read'
AWS_LOCATION = 'static'
STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{AWS_LOCATION}/'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
MEDIA_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/media/'
# MEDIA_ROOT = MEDIA_URL
AWS_S3_FILE_OVERWRITE = False
DEFAULT_FILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
python manage.py collectstatic