AWS S3のオブジェクト(画像や動画)を特定のドメインからのみ開けるようにする方法
開発している際に、特定のドメインの時のみURLが開けるように設定したい場合があったので、備忘録として残しておく。
1. パブリックアクセスの一部無効
下記で対応するBucket Policyの編集で競合するため下記2つを無効にする
・ 新しいパブリックバケットポリシーまたはアクセスポイントポリシーを介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする
・ 任意のパブリックバケットポリシーまたはアクセスポイントポリシーを介したバケットとオブジェクトへのパブリックアクセスとクロスアカウントアクセスをブロックする
2. Bucket Policyの編集
- AWS Management Consoleにサインインし、開くAmazon S3 コンソール。
- ポリシーを適用するバケットを選択します。
- [Permissions] タブを選択し, [Bucket Policy] をクリックします。
- Bucket Policy Editor に上記のポリシーテキストを入力または貼り付けて、yourbucketを実際のバケット名,example.comを許可するドメインに置き換えます。
- [Save] をクリックします。
ドメインとバケットは各自のものを使用する
{
"Version":"2012-10-17",
"Id":"http referer policy example",
"Statement":[
{
"Sid":"Allow get requests referred by any subdomain of example.com",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:GetObject",
"Resource":"arn:aws:s3:::yourbucket/*",
"Condition":{
"StringLike":{
"aws:Referer":[
"http://*.example.com/*",
"https://*.example.com/*",
"http://example.com/*",
"https://example.com/*"
]
}
}
}
]
}
完成物
下記HTMLを許可したドメインとそれ以外のドメインに入れて検証した.
<video controls="" width="250">
<source src="s3のバケットのオブジェクトURL" type="video/webm">
</video>