Создать подписанный URL-адрес CloudFront в Django - PullRequest
0 голосов
/ 13 января 2020

Я связал пользовательский домен с моим дистрибутивом CloudFront и ограничил доступ к корзине, чтобы разрешить только доступ к объектам из корзины только через CloudFront. Я установил пользовательский домен в django -хранилищах, но сгенерированный URL-адрес не подписан, и каждый раз, когда я пытаюсь получить доступ к загруженным объектам, доступ к нему запрещается.

Как создать подписанный URL-адрес для моего Распространение CloudFront с учетом того, что я сопоставил его с пользовательским доменом?

Я добавил фрагменты соответствующего кода для контекста.

settings.py

if 'AWS_ACCESS_KEY_ID' in os.environ:
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'property233/static'),
    ]

    AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
    AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']
    AWS_STORAGE_BUCKET_NAME = os.environ['AWS_STORAGE_BUCKET_NAME']
    AWS_S3_CUSTOM_DOMAIN = os.environ['AWS_S3_CUSTOM_DOMAIN']
    # AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME

    AWS_S3_OBJECT_PARAMETERS = {
        'CacheControl': 'max-age=86400',
    }

    AWS_STATIC_LOCATION = 'static'
    STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
    STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_STATIC_LOCATION)

    DEFAULT_FILE_STORAGE = 'property.storage_backends.MediaStorage'
    PRIVATE_FILE_STORAGE = 'property.storage_backends.PrivateDocumentStorage'

storage.py

from storages.backends.s3boto3 import S3Boto3Storage

class MediaStorage(S3Boto3Storage):
    location = 'media'
    file_overwrite = False


class PrivateDocumentStorage(S3Boto3Storage):
    location = 'documents'
    default_acl = 'private'
    file_overwrite = False

models.py

class Landlord(models.Model):
  active = models.BooleanField(default=True)
    property_management_proposal = models.FileField(storage=PrivateDocumentStorage())
    signed_agreement = models.FileField(storage=PrivateDocumentStorage(), )
    owner_id = models.FileField(storage=PrivateDocumentStorage(), verbose_name='ID Card of property owner')
    property_deed = models.FileField(storage=PrivateDocumentStorage(), default='document.pdf')
    land_title_verification = models.FileField(storage=PrivateDocumentStorage())
    facilities_checklist = models.FileField(storage=PrivateDocumentStorage())
    video = models.URLField(default='https://youtube.com')

    class Meta:
        app_label = 'property'

    def __str__(self):
        return self.property_owner_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...