Назад | Перейти на главную страницу

Смешивание частных и общедоступных статических файлов в AWS может быть полностью частным или полностью общедоступным.

Я пытаюсь переместить свои статические ресурсы в AWS. Я слежу за многими сообщениями в блогах, но больше всего за этим: https://simpleisbetterthancomplex.com/tutorial/2017/08/01/how-to-setup-amazon-s3-in-a-django-project.html

Теперь я могу либо заставить его работать так, чтобы это все было открыто, либо ничего не было.

Если я добавлю эту политику в свою корзину, все смогут видеть все, даже если у меня есть моя конфигурация, как описано ниже:


    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mybucket/*"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::accountnbr:user/user"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::mybucket/*"
        }
    ]
}

Это должно означать, что все могут видеть, только я могу редактировать.

Теперь я настроил свои статические ресурсы и частное хранилище, в которое хочу поместить свои медиафайлы. В моих статических активах есть мои файлы css и так далее.

Вот мой конфиг:


AWS_ACCESS_KEY_ID = 'mykey'
AWS_SECRET_ACCESS_KEY = 'mysecretkey'
AWS_STORAGE_BUCKET_NAME ='mybucket'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}
AWS_LOCATION = 'static'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'mysite/static'),
]
STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
STATICFILES_STORAGE = 'config.settings.storage_backends.StaticStorage'
AWS_DEFAULT_ACL = 'public-read'
AWS_PRIVATE_MEDIA_LOCATION = 'media'
PRIVATE_FILE_STORAGE = 'config.settings.storage_backends.PrivateMediaStorage'


то у меня это в моем storage_backends.py


class StaticStorage(S3Boto3Storage):
    location = 'static'
    default_acl = 'public'

class PrivateMediaStorage(S3Boto3Storage):
    location = settings.AWS_PRIVATE_MEDIA_LOCATION
    default_acl = 'private'
    file_overwrite = False
    custom_domain = False

Я не настраивал публичное хранилище мультимедиа, потому что мне нужны только частные мультимедийные файлы. И общедоступные статические файлы, которые, как мне кажется, попадают в мой StaticStorage ....

Так же, к сожалению, мои личные файлы можно скачать по ссылке .....

Я краснею по поводу предварительно подписанных URL-адресов, но разве это не должно работать должным образом с моей конфигурацией? Или я что-то упускаю?

Заранее спасибо, очень признателен!