amazon-web-services - 通过 HTTPS 提供静态 S3 网站时降低 CloudFront 成本

标签 amazon-web-services amazon-s3 amazon-cloudfront

我维护着一个“爱好”网站来试验 AWS 技术。因为这是一个纯粹的爱好,所以我尽量保持它的成本尽可能低,并且只使用那些绝对必要的服务。

几个月来,该网站开始产生一些流量,每天约有 30-50 次点击,有时甚至达到每天 1000 次点击。

我使用 CloudFront (CF) 的主要目的是拥有 HTTPS 并能够将我的域与我的 S3 网站存储桶连接起来,但由于点击量的增加,成本一直在上升。

显然,在这个阶段,成本是可控的(每月几美元),但正如我所说,我的目标是将成本保持在绝对最低水平,而 CF 开始成为我成本的最大份额。

查看 Bill Details 中的 CF 成本,向我展示 HTTPS 请求和尤其是带宽占成本的最大份额。

我正在寻找一种方法,使我能够继续将 CF 用于 HTTPS,并能够从 S3 存储桶安全地指向我的域,同时降低请求和带宽产生的成本。

该网站是静态的,完全托管在 S3 上。它包含:

  • index.html - 每小时自动更新
  • 10 个类别页面(每个大小为 250 KB)- 每小时自动更新,它们包含指向详细信息页面的链接
  • < 1,000 个详细信息页面(每个大小为 100 KB)- 这些页面创建一次,然后再也不会更改
  • < 1,000 张图片(每张 50 KB)- 每个详情页面有 1 张图片,它们的行为与详情页面相同

我的CF配置如下:

  • 没有原始自定义 header
  • 行为:
    • 路径模式:默认 (*)
    • 查看器协议(protocol)策略:将 HTTP 重定向到 HTTPS
    • 基于选定请求 header 的缓存:白名单
    • 白名单 header :Referer
    • 对象缓存:自定义
    • 分钟。 TTL:0
    • 最多TTL:31536000
    • 默认 TTL:0
    • 转发 Cookie:无
    • 查询字符串转发和缓存:无
    • 没有地域限制

分析 CF 成本的大部分是带宽,这告诉我可能是页面和图像文件导致了这种情况。 IE。当人们加载我的页面并提供图像文件时,每页总计 100 kb + 50 kb。

根据我对 CF 的研究,我怀疑 Path PatternTTL 参数是此处需要优化的,以实现成本降低。如果有人能给我指出正确的方向,那就太好了。

最佳答案

带宽成本与从您的网站检索的数据量成正比。

  • 亚马逊 S3:9c/GB
  • Amazon CloudFront:8.5c/GB 到 17c/GB 取决于位置

降低成本的一些想法:

  • 将 CloudFront 分配更改为使用 Price Class 100,它只为来自低成本位置的流量提供服务。其他位置的用户访问速度会较慢,但您会省钱!
  • 增加您的默认 TTL,使内容缓存时间更长,从而减少重复请求。
  • 激活并检查 CloudFront 访问日志 以分析传入流量。可能是很多请求来自蜘蛛和机器人。您可以通过创建 robots.txt 文件来限制此类访问。
  • 通过降低质量来减小图像的文件大小。质量上的权衡可能值得节省成本。
  • 制作一个不太受欢迎的网站。这将降低您的成本! :)

关于amazon-web-services - 通过 HTTPS 提供静态 S3 网站时降低 CloudFront 成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61627699/

相关文章:

amazon-web-services - Lambda 内向 ApiGateway 发出的请求导致请求无法得到满足

mysql - 使用 MySQL 将 Symfony 应用程序部署到 AWS

amazon-web-services - 有什么更快的方法可以将多个文件从s3下载到本地文件夹?

file-io - 通过Java写文件到S3

amazon-web-services - 在没有 S3 的 aws route 53 中将根域重定向到 www

amazon-web-services - 如何从现有 API 网关创建 AWS Cloudformation Stack?

amazon-web-services - 通过 aws education 账户为 IAMUSER 创建访问 token 时出现问题

javascript - 将 ArrayBuffer 发送到 S3 放入 signedURL

amazon-web-services - AWS CloudFront 和 S3 : How to make new S3 content immediately available in CloudFront?

javascript - 如何通过CloudFront实现分段上传?