我开发了一个 Python 脚本,使用该boto
库将文件上传到我的 S3 存储桶。使用该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 上传元数据字段同时仍防止盗链的任何想法?