Я могу загружать файлы в корзину S3 из моего приложения django, используя представление администратора моделей.Я также могу просматривать видео в моем представлении администратора приложения django.Но я не могу просмотреть видео через файл django .html .
Вот мой models.py файл
from project_4.storage_backends import MediaStorage
class video(models.Model):
videofile = models.FileField(storage=MediaStorage(), null=True, verbose_name="", unique=True)
Я создал storage_backends.py в папке проекта моего приложения
from django.conf import settings
from storages.backends.s3boto3 import S3Boto3Storage
class MediaStorage(S3Boto3Storage):
location = settings.AWS_MEDIA_LOCATION
default_acl = 'private' # To turn access control list into private use only. Will use it in models.py
file_overwrite = False # Not to replace files even they have same name
custom_domain = False
В моем settings.py я добавил следующее
import boto3
from botocore.client import Config
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
AWS_ACCESS_KEY_ID = 'x'
AWS_SECRET_ACCESS_KEY = 'x'
AWS_STORAGE_BUCKET_NAME = 'django-draft-project-1'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
AWS_S3_REGION_NAME = "eu-central-1"
AWS_S3_SIGNATURE_VERSION = "s3v4"
# AWS S3 Private Media Upload
AWS_MEDIA_LOCATION = 'media'
PRIVATE_FILE_STORAGE = 'project_4.storage_backends.MediaStorage'
AWS_S3_OBJECT_PARAMETERS = {
'Expires': 'Thu, 31 Dec 2099 20:00:00 GMT',
'CacheControl': 'max-age=94608000',
}
На данный момент я могу загружать и просматривать мое видео через консоль администратора.Теперь я хотел бы, чтобы видео было доступно для просмотра в моем html.
<video controls>
<source src={{ S3_URL }}{{ detailedview.video_name }}>
</video>
* {{ S3_URL }}{{ detailedview.video_name }}
возвращает корневой URL-адрес, который я вижу на странице администратора, который является https://django-draft-project-1.s3.amazonaws.com/media/SampleVideo_1280x720_10mb.mp4
, однако вставка этого URL-адреса вызывает AccessDenied
Фактический URL-адрес администратора сверху при воспроизведении видео:
https://django-draft-project-1.s3.amazonaws.com/media/SampleVideo_1280x720_10mb.mp4?X-Amz-Algorithm=wewe-HMAC-wewe&X-Amz-Credential=wewewe%2F20190401%wwewwe-central-1%2Fs3%wewe&X-Amz-Date=20190401T053817Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&ewew-Signature=123456qwertasdfzxcvasdfwert
Более того, мой URL-адрес объекта на консоли s3 - это URL-адрес объекта
https://s3.eu-central-1.amazonaws.com/django-draft-project-1/media/SampleVideo_1280x720_5mb.mp4
Но также использование его напрямую приводит к AccessDenied
Как я могу исправить отказ в доступе в моем .html, чтобы я мог воспроизвести медиа-файл обратно пользователю?