pip install python-decouple # variaveis de ambiente
pip install django-storages # storage
cat << EOF > .env
AWS_ACCESS_KEY_ID=**********
AWS_SECRET_ACCESS_KEY=****************
AWS_STORAGE_BUCKET_NAME=brejinho
EOF
echo ".env" >> .gitignore
# storage_backends.py
from django.conf import settings
from storages.backends.s3boto3 import S3Boto3Storage
class MediaStorage(S3Boto3Storage):
'''
Público
'''
location = 'media'
file_overwrite = False
class PrivateMediaStorage(S3Boto3Storage):
location = settings.AWS_PRIVATE_MEDIA_LOCATION
default_acl = 'private'
file_overwrite = False
custom_domain = False
# settings.py
INSTALLED_APPS = [
...
'storages',
...
]
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 = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
# AWS_PRIVATE_MEDIA_LOCATION = 'media/private'
# Público
DEFAULT_FILE_STORAGE = 'backend.storage_backends.MediaStorage'
# Privado
# PRIVATE_FILE_STORAGE = 'backend.storage_backends.PrivateMediaStorage'
# models.py
class Foto(models.Model):
documento = models.FileField(
storage=MediaStorage(),
# storage=PrivateMediaStorage(),
null=True,
blank=True
)