【问题标题】:Serving S3 on a EC2 server在 EC2 服务器上提供 S3
【发布时间】:2019-01-12 10:30:53
【问题描述】:

我们希望在 S3 上安全地提供大量静态资产。

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

我发现了这个:http://www.cyberkan.com/how-to-mount-s3-over-ec2-linux/,它显示了如何将 S3 挂载为卷。

有人尝试通过 s3fs 在 Apache 或 EC2 上的 nginx 上提供 S3 存储桶吗?就性能和可靠性而言,这是一个可行的策略吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您可以通过将内容保留在 S3 上来保护内容,然后在 S3 上编辑存储桶策略以仅在用户单击您服务器上的链接时才允许访问您的内容。例如,如果您的内容管理系统(我假设它实现某种形式的身份验证)位于 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 的身份验证并单击链接以从该经过身份验证的浏览器会话中查看或下载您的内容时,才能访问这些文件。

      【讨论】:

      • HTTP REFERER Header 由用户的浏览器发送。这是微不足道的欺骗。这种方法不安全。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-24
      • 1970-01-01
      相关资源
      最近更新 更多