【问题标题】:Protecting S3 assets without CloudFront在没有 CloudFront 的情况下保护 S3 资产
【发布时间】:2021-09-20 14:05:14
【问题描述】:

我是使用 AWS 的初学者,目前我正在使用基于微服务的架构在 S3 存储桶上托管 Web 应用程序的资产。我想允许使用该应用程序的浏览器访问资产。但是在整个互联网上,总是说强烈建议防止公开访问 S3 存储桶。 如果没有 CloudFront,我怎么能做到这一点,因为所有用户都在同一个区域,所以我不会使用它?

【问题讨论】:

  • 为什么要避免使用 CloudFront?推荐从 S3 存储桶提供静态资产是有充分理由的。
  • 我说应用的用户在同一个区域。我在这里找到了一个有用的答案,确认在这种情况下不需要 CloudFront。 stackoverflow.com/questions/3327425/…。老实说,我不明白投反对票的原因。

标签: amazon-web-services amazon-s3


【解决方案1】:

您不能将 S3 用于静态托管并且遵循 AWS 关于私有 S3 存储桶的最佳实践 - 您需要选择一个。

推荐的结构是私有 S3 存储桶,前面有一个公共 CloudFront 分配,以及一个源访问身份来控制对源存储桶的访问。老实说,如果您只使用 GET 访问配置您的存储桶并启用静态 Web 托管,这并不可怕,但 CloudFront 提供了比 S3 静态网站托管的几个显着优势:-

  1. 私有 S3、公有 CloudFront 是一种更好的默认安全状态,并且您不太可能犯一些常见错误 - 因此您会在整个 Internet 上看到此指南。
  2. 与仅在同一区域中仅使用 S3 相比,通过 S3+CloudFront 托管文件平均会减少延迟并提高下载速度。世界各地有许多通过超高速连接相互连接的边缘位置。通过边缘站点连接的最终用户与通过公共互联网直接访问区域 S3 存储桶相比,有效地采用更短的路径到达原始 S3 存储桶。
  3. 使用 CloudFront 可能会比单独使用 S3 便宜。
  4. 灵活性 - CloudFront 可以访问多个存储桶(或负载均衡器)并为来自不同来源的不同路径提供服务。

如果您确实走 CF 路线(我建议您这样做),那么您将获得很多好处。

请记住 CF 尊重与 S3 中的对象关联的任何缓存标头,或使用 CF 分发中设置的默认值。小心在文件上设置较长的缓存时间 - 您可以在 CF 中清除缓存(称为失效) - 但已下载文件的最终用户浏览器也可能会尊重缓存标头(这是您可以使用“缓存破坏”查询的地方字符串...)。

【讨论】:

    猜你喜欢
    • 2014-04-04
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 2015-09-02
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多