Cloudfront TTL:将最大 TTL 设置为 0 以获得 DDOS 保护优势
Posted
技术标签:
【中文标题】Cloudfront TTL:将最大 TTL 设置为 0 以获得 DDOS 保护优势【英文标题】:Cloudfront TTL: Setting max TTL to 0 to just get DDOS protection benefits 【发布时间】:2018-10-14 04:05:55 【问题描述】:我一直在阅读 Cloudfront 文档,我想确保我的计划是合理的。我有一个后端 API 结构为 EC2 HTTP 服务器,经常更新内容(每秒几次更改)。这是我的理解:
我不应该将此 HTTP 服务器直接暴露给客户端,因为这会使 EC2 服务器容易受到 DDOS 攻击 使用 CloudFront 边缘站点创建一个间接层有助于防御 DDOS,因为 AWS 可以在网络外部而不是在我的 EC2 实例周围部署防火墙 通过设置最大 TTL = 0,我确保 Cloudfront 只是一个间接层,不会尝试进行任何实际缓存,以便用户始终获得最新信息。这些假设是否正确/我的计划听起来合理吗?从在线阅读看来,这是对 Cloudfront 的非标准使用。
【问题讨论】:
【参考方案1】:这是一个完全合理的计划。
这不是 AWS 销售 CloudFront(作为 CDN)的主要用例,但很难说这种做法不在产品的设计范围内。
Amazon CloudFront 接受短至 0 秒的到期期限(在这种情况下,Amazon CloudFront 将使用源重新验证每个查看器请求)。 Amazon CloudFront 还支持特殊的缓存控制指令,例如私有、无存储等;在交付可能未在边缘缓存的动态内容时,这些通常很有用。
https://aws.amazon.com/cloudfront/dynamic-content/
当然,如果有足够的流量,一定程度仍然足以使您的服务器超载,但是,是的,这是一个可靠的策略。
在后台,API Gateway 边缘优化端点和 S3 传输加速功能都使用完全禁用缓存的 CloudFront。在这两种情况下,您都无法在控制台中看到与这些服务相关的 CloudFront 分配,但这就是它们的工作方式。
【讨论】:
以上是关于Cloudfront TTL:将最大 TTL 设置为 0 以获得 DDOS 保护优势的主要内容,如果未能解决你的问题,请参考以下文章
对 cloudFront 中的最小、最大和默认 TTL 感到困惑
指向 Cloudfront 资源的 Route53 别名记录的默认 TTL 是多少?
CloudFront / S3 ETag:CloudFront 是不是可以在 CF TTL 过期之前发送更新的 S3 对象?