boto
ライブラリを使用して S3 バケットにファイルをアップロードするPython スクリプトを開発しました。Key.set_contents_from_filename
メソッドを使用してファイルをアップロードするときは、ヘッダーCache-Control
とExpires
ヘッダーを指定して、適切なブラウザー キャッシュを有効にします。これはすべて正常に機能し、メタデータ フィールドに正しいヘッダーが設定されたファイルがバケットに表示されます。
ファイルのホットリンクを防ぐために、S3 に次のバケット ポリシーを追加しました。
{
"Version": "2008-10-17",
"Id": "MySite",
"Statement": [
{
"Sid": "Deny access if not specified referrer",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"http://www.mysite.com/*",
"http://mysite.com/*"
]
}
}
}
]
}
このポリシーはホットリンクを防ぐために機能しますが、boto を使用してファイルをアップロードすると、ヘッダーCache-Control
とExpires
ヘッダーが設定されません。バケット ポリシーを削除すると問題が解決するため、バケット ポリシーを適切に指定していないことは明らかです。
ホットリンクを防止しながら、boto を使用してメタデータ フィールドをアップロードできるようにバケット ポリシーを変更する方法についてのアイデアはありますか?