在EC2服务器上提供S3

时间:2013-05-14 19:27:48

标签: amazon-web-services amazon-s3 amazon-ec2 s3fs

我们在S3上有一堆静态资产,我们希望安全地提供服务。

由于我们无法使用自定义域名和SSL证书,并希望与现有的auth解决方案集成,我们希望尝试通过EC2上的真实网络服务器提供S3内容。

我发现:http://www.cyberkan.com/how-to-mount-s3-over-ec2-linux/显示了如何将S3作为卷安装。

有人尝试通过s3fs通过Apache或nginx在EC2上提供S3存储桶吗?这在性能和可靠性方面是否可行?

2 个答案:

答案 0 :(得分:0)

我的经历好坏参半。 S3不是块设备。许多应用程序访问文件系统,假设它是块设备。当您尝试访问s3fs安装上的文件时,结果可能无法预测。

S3确实有SSL支持,您只需要使用他们的域名。您可以通过签名网址提供对私人文件的访问。这对于一段时间内的用户有效。

答案 1 :(得分:-2)

您可以通过将内容保留在S3上来保护内容,然后在S3上编辑Bucket Policy以仅在用户单击来自服务器的链接时允许访问您的内容。例如,如果您的内容管理系统(我假设实现了某种形式的身份验证)位于www.example.com,那么在S3中,转到您的存储桶的“属性”,然后在“权限”区域中单击“添加存储桶策略” ”

例如,您可以使用以下代码限制对特定HTTP引用程序的访问:

{
  "Version":"2008-10-17",
  "Id":"http referer policy example",
  "Statement":[
    {
      "Sid":"Allow get requests originated from www.example.com and example.com",
      "Effect":"Allow",
      "Principal":"*",
      "Action":"s3:GetObject",
      "Resource":"arn:aws:s3:::examplebucket/*",
      "Condition":{
        "StringLike":{
          "aws:Referer":[
            "http://www.example.com/*",
            "http://example.com/*"
          ]
        }
      }
    }
  ]
}

注意:此示例来自the S3 documentation

我成功地使用了这种方法。即使有人查看页面源并尝试直接转到S3存储桶源,它们也会获得“拒绝访问”。只有在向www.example.com进行身份验证并单击链接以查看或下载经过身份验证的浏览器会话中的内容后,才能访问这些文件。