【问题标题】:Amazon cloudfront and 403 cost亚马逊云端和 403 成本
【发布时间】:2017-12-06 08:37:50
【问题描述】:

我们在云端托管一些脚本和内容。作为其网站的一部分,不同的消费者可以公开访问这些内容。当脚本不再相关时,我们使文件/内容无效并且不再可用。在他们的页面上使用脚本/内容的人会收到通知,但我们现在不能强制他们删除给出 403 状态代码的脚本/内容。如何避免或降低此成本?

【问题讨论】:

    标签: amazon-cloudfront


    【解决方案1】:

    这是一种策略。

    假设您的域名是 example.com。

    使用备用域名 *.example.com 创建 CloudFront 分配。

    对于每个站点、脚本或站点+脚本组合,指定一个自定义的“虚拟”主机名——例如jozxyqkrd52169.example.com。仅将其提供给一个站点。

    在 Route 53 中,仅维护您当前认为有效的主机名的 DNS 条目。当不再需要该条目时删除它们。这可以自动化。

    从技术上讲,CloudFront 会响应任何 *.example.com 主机名,但没有指向那里的 DNS 记录,因此不会收到对您未使用的主机名的请求。

    您将支付 Route 53 的费用来处理对已删除条目的主机名的查询,但这只是 CloudFronr 和 S3 请求定价成本的一小部分。

    或者,您可以使用指向 CloudFront 的通配符记录来预置 Route 53,而不是预置 Route 53,然后为要阻止的主机名创建特定条目。指向目标名称的 CNAME 记录,例如 invalid.invalid.invalid 是一个*域名,实际上是为表示记录实际上无效而保留的)应该可用于覆盖特定子域并阻止对这些子域的请求来自点击 CloudFront 的名称。

    请注意,只要您不将 CloudFront 缓存行为配置为将 Host 标头转发到源,在响应多个主机名的单个分配上,foo.example.com/cat.jsbar.example.com/cat.js 将被视为相同对象,因此这样的多个主机名不会对您的缓存命中率产生负面影响。

    【讨论】: