バケットに次のバケットポリシーを設定しています。
{
"Version": "2008-10-17",
"Id": "My access policy",
"Statement": [
{
"Sid": "Allow only requests from our site",
"Effect": "Allow",
"Principal": { "AWS": "*"},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket/*",
"Condition": {
"StringLike": {
"aws:Referer": [" http://mydomain.com/*"," http://www.mydomain.com/*"]
}
}
},
{
"Sid": "Dont allow direct acces to files when no referer is present",
"Effect": "Deny",
"Principal": {"AWS": "*" },
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket/*",
"Condition": {
"Null": {"aws:Referer": true }
}
}
]
}
クエリ文字列認証も構成しましたが、両方を使用できないようです。mydomainから発信されていないリクエストを拒否するようにバケットポリシーを設定している場合、クエリ文字列認証を使用した一時URLも提供されません。だから私の質問は、どうすれば両方を持つことができますか?URLパラメータをチェックし、「署名」と呼ばれるパラメータがあるかどうかを確認する方法はありますか?その場合、リファラーポリシーを適用しませんか?