如何禁用Amazon S3原始端点访问

时间:2014-12-24 12:30:36

标签: amazon-web-services amazon-s3

假设您想在S3上托管静态网站:

  1. 您创建一个名为your-website.com的存储分区,并将其设置为网络托管;
  2. 您在域的区域文件中添加CNAME以指向您的S3存储桶。
  3. 大。访问http://your-website.com时,一切正常。但是你不希望原始/“裸”端点可以访问。

    存储桶中是否有任何设置禁止直接访问http://your-website.com.s3-website.your-region.amazonaws.com

    原因是,如果您的网站可通过http://your-website.comhttp://your-website.com.s3-website.your-region.amazonaws.com访问,则会损害您的搜索引擎优化(重复内容)

1 个答案:

答案 0 :(得分:7)

你提到你的主要关注点是SEO。为此,您可以使用其他技术,这些技术可能比您最初提出的技术更容易实现。

处理重复内容的主要技巧之一是使用rel=canonical,这可能相当容易实现。有关详细信息,请参阅http://googlewebmastercentral.blogspot.com.br/2013/04/5-common-mistakes-with-relcanonical.html

如果您坚持需要禁用对存储桶的访问,除非客户端通过您的CNAME连接,您最好的选择是使用CloudFront。您在存储桶上禁用S3网站托管选项,将S3存储桶设为私有(即删除存储桶策略或允许公开读取的ACL),创建CloudFront分配,将存储桶定义为源,在您的分配上配置CNAME,更改DNS记录指向您的分发而不是存储桶,在您的分发上创建原始访问标识(OAI),并为该OAI授予对您的存储桶的访问权限。呼。

通过这一切,用户无法访问S3存储桶上的内容(除非他们的AK / SK具有读取存储桶的权限,并且显然发送已签名的请求)。唯一的方法是通过您的域名。

有关原始访问权限的详细信息,请参阅 http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html