Я хотел бы разрешить кому-либо воспроизводить видео, расположенное в моем s3 на моем сайте, как src
в теге <video>
, но не позволяет людям использовать его как src
на своем сайте или, чтобы воспроизвести видео напрямую, введя URL-адрес в панель браузера.
Я не хочу, чтобы люди делали это:
и я не хочу, чтобы следующий HTML-код появлялся на http:// на -site.com, но только на http:// my -site.com
<html>
<video src="https://s3.amazonaws.com/my-bucket/my-video.mp4"></video>
</html>
Я видел некоторые ссылки SO, но я хотел поговорить в коде, так как я не смог заставить эти решения работать для меня.
Здесь моя политика ведра, которая в настоящее время работает НЕ:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"https://my-site.com/*"
]
}
}
}
}
Два вопроса:
- Чтобы проверить мою политику в ящике, я помещаю вышеуказанный HTML в тестовый файл на свой локальный хост и, конечно же, могу получить доступ к видео, набрав
http://localhost/test.html
. Почему моя ведровая политика не предотвращает это? (Я бы хотел, чтобы он работал отhttp://my-site.com/test.html
) - Чтобы пользователи не вводили URL-адрес s3 в панель браузера, я думал, что мне нужно отдельное решение из политики bucket, поскольку мне не ясно, из документации AWS, как предотвратить прямой доступ через браузер. Я думал о хэшировании URL-адреса, чтобы было сложно догадаться. Возможно, существуют способы использования политики ковша AWS или других решений?
Чтобы быть более ясным, мои файлы хранятся на s3, но они доставляются Amazon CloudFront. Так что мой CloudFront url src в настоящее время является media.my-site.com/my-video.mp4. CNAME - media.my-site.com.