Django - AWS S3 Bucket - Показ изображений/css, но не javascript/webfont и загрузки файлов

Я делаю сайт портфолио, используя django. Все хорошо работает на моей локальной машине. Я решил использовать AWS S3 buckets для размещения моих статических файлов. Пройдя несколько руководств, я смог создать ведро и привязать к нему свой аккаунт. Теперь у меня проблема в том, что изображения и css отлично загружаются на моем сайте, однако веб-шрифты и файлы javascript, похоже, не работают. У меня также есть ссылка для загрузки резюме, но она не работает. При нажатии на файлы выдает ошибку:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>resume.pdf</Key>
<RequestId>xxx</RequestId>
<HostId>xxx</HostId>
</Error>

Интересно, что url в браузере, похоже, пытается получить из AWS.

Когда я захожу в ведро S3, я вижу все доступные файлы. При открытии изображений на моем сайте они правильно извлекаются из AWS.

Мой CORS установлен на:

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "POST",
            "PUT"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]

And settings.py is:

AWS_S3_REGION_NAME = 'us-east-2' # Your region name
AWS_S3_SIGNATURE_VERSION = 's3v4'
AWS_S3_ADDRESSING_STYLE = "virtual"
AWS_ACCESS_KEY_ID = 'xxx'
AWS_SECRET_ACCESS_KEY = 'xxx'
AWS_STORAGE_BUCKET_NAME = 'xxx'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

Есть ли что-то, что я упустил, что не позволяет моим js/webfonts/файлам работать на моем сайте?

Ок, я нашел решение. Похоже, что S3 не давал доступ к ведру. Я отредактировал политику ведра на AWS S3 следующим образом:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucketname/*"
        }
    ]
}

Замените имя bucketname на ваше реальное имя bucketname. Надеюсь, это поможет всем, кто может столкнуться с этой проблемой.

Вернуться на верх