自分のサイトのs3にある動画をタグで再生できるようにしたいのですが、サイトでのsrc
使用<video>
や、ブラウザバーにURLを入力して直接動画を再生することはできません。src
私は人々にこれをしてほしくない:
次のHTMLをhttp:// your -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/*"
]
}
}
}
}
2つの質問:
- バケットポリシーをテストするために、上記のHTMLをローカルホストのテストファイルに入れ、。と入力してビデオにアクセスできることを確認します
http://localhost/test.html
。バケットポリシーがこれを妨げないのはなぜですか?(私はそれがからのみ機能することを望みますhttp://my-site.com/test.html
) - 人々がブラウザバーにs3URLを入力するのを防ぐために、ブラウザを介した直接アクセスを防ぐ方法がAWSのドキュメントから明らかでないため、バケットポリシーとは別のソリューションが必要だと考えていました。推測しにくいようにURLをハッシュ化することを考えていました。おそらく、AWSバケットポリシーまたは他のソリューションを使用する方法はありますか?
より明確にするために、私のファイルはs3に保存されていますが、AmazonのCloudFrontによって配信されます。したがって、私のCloudFronturlsrcは現在media.my-site.com/my-video.mp4です。CNAMEはmedia.my-site.comです。