我已经查看了以下答案,但它讨论了私有内容和签名URL的Origin Access Identity。我的内容不是私密的,它是公开的,但我不希望其他网站热链接到我的图像。换句话说,我网站上的图片应该通过我的域名下的网址进行访问。
Simple example to restrict access to Cloudfront(S3) files from some users but not others
我已按照以下文档在我的CloudFront分配上创建OAI http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html
在我的发行版上应用OAI后,发生了一些奇怪的事情。我可以访问一些图像,有些我不能 当从localhost工作时,我无法访问CloudFront图像。
有没有办法可以指定哪些域可以访问我的资源,哪些域没有?喜欢这个?
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://example.com/*",
"localhost:*"
]
}
}
}
答案 0 :(得分:0)
"块"通过像您必须在Cloudfront级别执行的策略执行操作。除了查询新内容时,S3不会考虑因素(这可能解释了为什么你在尝试访问图像时出现了奇怪的问题)。
如果你的问题主要是试图阻止热链接,那么不幸的是,我认为通过AWS处理这个问题的唯一方法是使用签名网址: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html
这是主题上的Stack线程:Preventing Amazon Cloudfront hotlinking
为了给你一个更简单的选择,虽然偶尔需要手动更新,但这是我过去所做的。其核心是在您的Cloudfront发行版上添加CNAME,例如assets-1.yoursite.com。几个月后,如果您发现自己被热链接,可以将CNAME更改为assets-2.yoursite.com,然后更新您的网站以使用新网址。如果您有一个控制站点CDN路径的变量,则可以快速解决此问题。
这里深入解释: http://www.explainthatstuff.com/blocking-cloudfront-hotlinks.html
然后,您可以使用Cloudfront' Popular Objects'和#'热门推荐人' AWS控制台中的分析部分,用于监控来自其他站点的流量,以确定何时是切换CNAME的好时机。