Amazon CloudFront 常见问题
一般性问题
全部打开什么是 Amazon CloudFront?
Amazon CloudFront 是一项 Web 服务,可为企业和 Web 应用程序开发人员提供简单且经济高效的内容分发方法,不仅延迟低,而且数据传输速度快。与其他 AWS 产品一样,Amazon CloudFront 也是一种按用量付费的自助服务,无需长期承诺或最低费用。使用 CloudFront,您的文件将通过一个全球边缘站点网络来传输至最终用户。
Amazon CloudFront 可以用来做什么?
Amazon CloudFront 提供简单的 API,让您能够:
- 使用遍布全球的边缘站点网络来处理请求,从而以低延迟和高数据传输速率来分发内容。
- 无需就合同和最低承诺进行谈判即可开始使用。
如何开始使用 Amazon CloudFront?
在 Amazon CloudFront 详细信息页面上,单击“创建免费账户”按钮。如果您选择使用其他 AWS 产品作为通过 Amazon CloudFront 提供的文件的来源,那么在创建 CloudFront 分发之前,您必须先注册该服务。
如何使用 Amazon CloudFront?
要使用 Amazon CloudFront,您必须按以下步骤操作:
- 对于静态文件,请将最终版本的文件存储在一个或多个原始服务器上。它们可能是 Amazon S3 存储段。对于动态生成的个性化或自定义内容,您可以使用 Amazon EC2 或其他任何 Web 服务器作为原始服务器。这些原始服务器将存储或生成将通过 Amazon CloudFront 分发的内容。
- 通过简单的 API 调用在 Amazon CloudFront 上注册您的原始服务器。此调用将返回一个 CloudFront.net 域名,您可以使用该域名,通过 Amazon CloudFront 服务从您的原始服务器分发内容。例如,您可以注册 Amazon S3 存储段“bucketname.s3.amazonaws.com”作为所有静态内容的来源,并注册一个 Amazon EC2 实例“dynamic.myoriginserver.com”作为所有动态内容的来源。然后,使用 API 或 AWS 管理控制台,您可以创建可能返回“abc123.cloudfront.net”作为分配域名的 Amazon CloudFront 分配。
- 将 cloudfront.net 域名或您创建的 CNAME 别名包括在您的 Web 应用程序、媒体播放器或网站中。使用 cloudfront.net 域名(或您设置的 CNAME)发出的每个请求,都被路由到最适合以最高性能分发内容的边缘站点。该边缘站点将尝试使用文件的本地副本来处理请求。如果本地副本不可用,Amazon CloudFront 将从源文件中获取副本。然后,此副本将能够在该边缘站点使用,以便处理将来的请求。
Amazon CloudFront 如何提供更高的性能?
Amazon CloudFront 采用由边缘站点和区域边缘缓存构成的全球网络,能将您的内容缓存副本存储在靠近查看者的位置。Amazon CloudFront 确保将由距离最近的边缘站点来处理最终用户请求。由此,传输读者请求的距离变短,Amazon CloudFront 也为读者提升了性能。对于没有缓存在边缘站点和区域性边缘缓存上的文件,Amazon CloudFront 将与您的原始服务器保持永久连接,以便尽快从原始服务器提取这些文件。最后,Amazon CloudFront 使用其他优化措施(例如更广的 TCP 初始拥塞窗口),在将您的内容传输至查看者时提供更高的性能。
Amazon CloudFront 如何降低通过 Internet 分发内容的成本?
与其他 AWS 产品一样,Amazon CloudFront 没有最低承诺,您只需为自己的使用量付费。与自托管相比,Amazon CloudFront 无需您运行分布在 Internet 上多个站点的缓存服务器网络,从而避免了相关开支和复杂性,也无需您过高预置容量以便处理可能出现的流量峰值。Amazon CloudFront 还运用了多种技术,例如,将在一个边缘站点上针对同一文件发出的多个同步查看者请求重叠到向原始服务器发出的单个请求中。这样可以降低原始服务器上的负载,从而减少扩展原始基础设施的需求,以实现进一步成本节省。
此外,如果您正在使用的是 AWS 原始服务器(如 Amazon S3、Amazon EC2 等),并且是 2014 年 12 月 1 日生效的,我们将不再收取向 Amazon CloudFront 传输 AWS 数据的费用。这适用于从所有 AWS 区域向全球 CloudFront 边缘站点的数据传输。
Amazon CloudFront 如何加快整个网站的速度?
Amazon CloudFront 使用您为文件设置的标准缓存控制标头来识别静态内容和动态内容。使用单个 Amazon CloudFront 分发来传输您的所有内容,这有助于确保将性能优化应用于整个网站或 Web 应用程序。使用 AWS 原始服务器时,由于 AWS 能够跟踪和调节原始路由、监控系统运行状况并在出现任何问题时快速响应,而且 Amazon CloudFront 与其他 AWS 产品相集成,因而性能、可靠性和易用性得到了改进,让您从中受益。您还可以针对单个站点上的不同类型内容使用不同来源(例如将 Amazon S3 作为静态数据元来源、将 Amazon EC2 作为动态内容来源、将自定义来源用于第三方内容),这能为您带来诸多便利,而且只需为实际用量付费。
Amazon CloudFront 与 Amazon S3 有何不同?
Amazon CloudFront 是分发经常访问的静态内容的理想之选,可从边缘站点传输中受益 — 例如常用的网站图像、视频、多媒体文件或软件下载。
Amazon CloudFront 与传统内容分发解决方案有何不同?
Amazon CloudFront 让您能够快速获得高性能内容传输的优势,而无需谈判合同,也无需支付高价格。Amazon CloudFront 让所有开发人员能够在自助服务模式下享受仅按实际用量付费的低定价。它还与其他 Amazon Web Services 紧密集成,让开发人员从中受益。该解决方案能够作为原始服务器简单地与 Amazon S3、Amazon EC2 和 Elastic Load Balancing 配合使用,为开发人员提供持久化存储与高性能传输的强大结合。Amazon CloudFront 还与 Amazon Route 53 和 AWS CloudFormation 相集成,提供进一步性能优势和简单配置。
Amazon CloudFront 支持什么类型的内容?
Amazon CloudFront 支持可以使用 HTTP 或 WebSocket 协议发送的内容。其中包括动态网页和应用程序,例如 HTML 或 PHP 页面或基于 WebSocket 的应用程序,以及作为 Web 应用程序一部分的任何常用静态文件,例如网站图像、音频、视频、媒体文件或软件下载。Amazon CloudFront 还支持通过 HTTP 分发实时或点播媒体流。
Amazon CloudFront 是否可与非 AWS 原始服务器配合使用?
可以。Amazon CloudFront 可与保存原始、最终版本内容(包括静态和动态)的任何原始服务器配合使用。使用自定义原始服务器不收取任何额外费用。
Amazon CloudFront 如何启用原始服务器冗余?
对于您添加到 CloudFront 分发的每个源,您可以分配一个备份源,以便在主要源不可用时自动提供流量服务。您可以选择 HTTP 4xx/5xx 状态代码的组合,当从主要源返回这些状态码时,它们将会触发备份源的失效转移。这两个源可以是 AWS 源和非 AWS 源的任意组合。
Amazon CloudFront 是否提供服务等级协议(SLA)?
是的。如果客户的月度正常运行时间百分比在任何账单周期内低于我们的服务承诺,Amazon CloudFront SLA 将提供服务补偿。可在此处找到更多信息。
可以将 AWS 管理控制台与 Amazon CloudFront 配合使用吗?
可以。您可以使用 AWS 管理控制台,通过简单的点击式 Web 界面来配置和管理 Amazon CloudFront。AWS 管理控制台支持 Amazon CloudFront 的大部分功能,让您能够利用 Amazon CloudFront 的低延迟传输,而无需编写任何代码或安装任何软件。您可以免费访问 AWS 管理控制台,网址为 https://console.aws.amazon.com。
哪些工具和库适用于 Amazon CloudFront?
在我们的资源中心,提供了各种用于管理 Amazon CloudFront 分发的工具和适用于各种编程语言的库。
是否可以将我的 Zone Apex(机构根网域 example.com,相对于 www.example.com)指向我的 Amazon CloudFront 分发?
可以。您可以通过两种方式将 Zone Apex(机构根网域,example.com)指向 Amazon CloudFront 分发。
第一种方式是使用 AWS 的权威 DNS 服务 Amazon Route 53,您可配置一条 ALIAS 记录,将 DNS 名称的 Apex 或根(如 example.com)映射到 Amazon CloudFront 分发。然后,Amazon Route 53 会使用您的 CloudFront 分发对应的正确 IP 地址来响应对 ALIAS 记录的每个请求。Route 53 对映射到 CloudFront 分发的 ALIAS 记录的查询不收取费用。
或者,借助 CloudFront 的任播静态 IP,您可以通过任意 DNS 服务提供商将 Apex 域指向 CloudFront 分发。只需使用 CloudFront 提供的 3 个静态 IP 地址创建标准 A 记录即可。该功能可将 Apex 域的支持范围扩展到 Route 53 之外,同时您的流量仍会被自动路由至最近的边缘站点,以在全球范围内实现高性能的内容分发。
边缘站点
全部打开什么是 CloudFront 区域边缘缓存?
CloudFront 通过名为边缘站点的全球数据中心网络传输内容。区域性边缘缓存站点位于原始 Web 服务器和全球边缘站点之间,直接向读者提供内容。这可帮助提升查看者的体验,同时降低扩展原始资源的运营负担和成本。
区域性边缘缓存如何运行?
Amazon CloudFront 拥有多个分散在全球的区域性边缘缓存(或称为 REC),提供靠近最终用户的额外缓存层。它们位于原始 Web 服务器和 AWS 边缘站点之间,直接向用户提供内容。如果缓存对象不再那么受欢迎,各个边缘站点可以移除这些对象,从而为更常请求的内容腾出空间。区域性边缘缓存的缓存宽度比任何单个边缘站点都更大,因此对象会缓存更长时间。这有助于让更多内容更为靠近读者,减少 CloudFront 返回原始 Web 服务器的需要,提升读者阅读体验。例如,欧洲的 CloudFront 边缘站点现在会转到法兰克福的区域性边缘缓存站点来提取对象,然后再返回您的原始 Web 服务器。区域性边缘缓存地点可用于任何来源,例如 S3、EC2 或自定义来源。当前托管应用程序源的区域会跳过 REC。
是否默认启用区域性边缘缓存功能?
是的。您无需对 CloudFront 分发进行任何更改;已为所有新的和现有的 CloudFront 分发默认启用本功能。使用此功能不会产生额外费用。
Amazon CloudFront 使用的边缘网络站点位于哪里?
Amazon CloudFront 通过全球边缘站点网络和区域边缘缓存进行内容分发。您可以在此处查看 Amazon CloudFront 站点的完整列表。
我可以选择向指定国家/地区提供内容(或不向其提供内容)吗?
可以,可以利用地理限制功能指定用户可以访问您的内容的国家/地区列表。或者,您也可以指定用户不可以访问您的内容的国家/地区列表。在这两种情况中,CloudFront 均以 HTTP 状态代码 403(禁止)响应来自受限制国家/地区的查看者的请求。
IP 地理位置数据库的准确程度如何?
国家/地区查找数据库的 IP 地址准确性因地区而异。根据最近的测试,我们所提供的 IP 地址与国家/地区映射的总体准确性为 99.8%。
我可以向我的最终用户提供自定义错误消息吗?
可以,您可以针对各种 HTTP 4xx 和 5xx 错误响应创建带有您自己的品牌和内容的自定义错误消息(例如 HTML 文件或 .jpg 图形)。然后,您可以对 Amazon CloudFront 进行配置,使其在您的原始服务器向 CloudFront 返回指定错误时,向查看者返回您的自定义错误消息。
Amazon CloudFront 将我的文件在边缘站点上保存多长时间?
默认情况下,如果没有设置缓存控制标头,则在上次检查原始服务器以获取文件更改 24 小时之后,每当边缘站点接收到请求时,都会检查该文件的更新版本。这段时间称为“过期时段”。 您可以通过对源文件中的文件设置缓存控制标头,将该过期时段设置为短至 0 秒或长至您需要的任意时间。Amazon CloudFront 使用这些缓存控制标头来确定检查原始服务器中该文件的更新版本的频率。对于设置为 0 秒的过期时段,Amazon CloudFront 将向原始服务器重新验证每个请求。如果文件不经常更改,最好设置较长的过期周期并实施版本控制体系,以管理对文件的更新。
如何将项目从 Amazon CloudFront 边缘站点中移除?
您可以通过多个选项将文件从边缘站点移除。您可以从原始文件中删除该文件,并且当边缘站点中的内容到达在每个数据元的 HTTP 标头中定义的过期时段时,它就将被移除。如果需要在指定过期时段之前移除冒犯性的或可能有害的材料,您可以使用无效 API 从所有 Amazon CloudFront 边缘站点中移除该对象。您可以在此处查看发出失效请求的费用。
发出失效请求的数量是否受到限制?
如果您想逐个让对象失效,则同一时间最多可以对每个分发的 3000 个对象发出失效请求。一个无效请求可以支持最多 3000 个对象,或针对一个对象的 3000 个请求,或者合计不超过 3000 个对象的任何组合方式。
如果您使用 * 通配符,则一次最多可以提出 15 个无效路径请求。您一次可以为每个分配的最多 3000 个单独对象提出无效请求,而通配符无效请求的限制与个别失效对象限制无关。如果您超过此限制,额外的无效请求将收到错误响应,直至先前的某个请求完成。
失效请求应仅在意外情况下使用;如果您事先知道您的文件需要经常从缓存中移除,建议您为文件实施版本控制体系和/或设置较短的过期周期。
嵌入式入网点
全部打开什么是 CloudFront 嵌入式入网点(POP)?
CloudFront 嵌入式入网点(POP)是一种 CloudFront 基础设施,部署在距离终端查看者最近的位置,即互联网服务提供商(ISP)和移动网络运营商(MNO)网络内部。嵌入式 POP 是定制的,可提供大规模直播视频、视频点播(VOD)和游戏下载。这些嵌入式 POP 由 Amazon 拥有和运营,部署在 ISP/MNO 网络的最后一英里,这样可以避免将最终查看者与内容源连接的拥塞网络中出现容量瓶颈,从而提高性能。
CloudFront 嵌入式 POP 与 CloudFront POP 有什么不同?
CloudFront 嵌入式 POP 与 CloudFront POP 的不同之处在于它们的部署位置和交付的内容。CloudFront 嵌入式 POP 直接部署在 ISP 和 MNO 网络中,这与部署在 AWS 网络中的 CloudFront POP 不同。嵌入式 POP 专为提供大规模可缓存流量(例如视频流和游戏下载)而构建,CloudFront POP 则旨在提供各种工作负载,包括可缓存内容和动态内容。
哪些工作负载最适合 CloudFront 嵌入式 POP?
CloudFront 嵌入式 POP 旨在提供可供许多最终查看者同时访问的可缓存内容,例如大规模直播、视频点播和游戏下载。
使用嵌入式 POP 是否需要单独付费?
不需要,使用 CloudFront 嵌入式 POP 无需支付任何其他费用。
如何获取嵌入式 POP 的访问权限?
嵌入式 POP 是一种可选功能,旨在提供大规模可缓存流量。请联系您的 AWS 销售代表,评估嵌入式 POP 是否适合您的工作负载。
我是否需要专门为 CloudFront 嵌入式 POP 创建新的 CloudFront 分发?
不,无需专门为嵌入式 POP 创建新的分发。如果您的工作负载符合条件,CloudFront 将根据请求为您的现有分发启用嵌入式 POP。
我需要在 CloudFront 嵌入式 POP 和 CloudFront POP 之间做出取舍吗?
对于内容交付,您不必在 CloudFront 嵌入式 POP 或 CloudFront POP 之间做出取舍。一旦您的 CloudFront 分发启用了嵌入式 POP,CloudFront 的路由系统就会动态利用 CloudFront POP 和嵌入式 POP 来传送内容,从而确保最终用户获得最佳性能。
我是一名 ISP,如何开始向我的网络添加嵌入式 POP?
请联系我们,以开始在您的网络中部署嵌入式 POP。
我是一名互联网服务提供商(ISP),如何管理网络中的嵌入式 POP?
您可以使用嵌入式 POP 门户管理部署在网络中的嵌入式 POP。嵌入式 POP 门户与 AWS 互连门户集成,并提供统一的界面,可以轻松自助完成与这些 POP 整个生命周期相关的各种任务。这包括申请新设备、跟踪请求进度、监控性能统计数据和请求支持。您可以使用 PeeringDB 账户,通过单点登录(SSO)身份验证来访问门户。
合规性
全部打开Amazon CloudFront 是否符合 PCI 规范?
Amazon CloudFront [不包括通过 CloudFront 嵌入式 POP 进行的内容交付] 包含在符合支付卡行业数据安全标准(PCI DSS)商家第 1 级(服务提供商需要遵循的最高级别)的服务组合中。有关更多信息,请参阅开发人员指南。
Amazon CloudFront 是否符合 SOC 规范?
Amazon CloudFront [不包括通过 CloudFront 嵌入式 POP 进行的内容交付] 符合 SOC(系统和组织控制)措施要求。SOC 报告是独立的第三方检查报告,阐明了 AWS 如何达成关键合规性控制和目标。 有关更多信息,请参阅 AWS SOC 合规性和我们的开发人员指南。
如何申请一份 AWS SOC 1、SOC 2 或 SOC 3 报告?
AWS SOC 1 和 SOC 2 报告面向使用 AWS Artifact 的客户提供。AWS Artifact 是一个自助服务门户,可通过此门户按需访问 AWS 的合规性报告。您可以登录 AWS 管理控制台中的 AWS Artifact 或通过 AWS Artifact 入门了解更多信息。AWS 网站上公开发布了最新的 AWS SOC 3 报告。
HTTP、HTTP/2 和 HTTP/3
全部打开Amazon CloudFront 支持哪些类型的 HTTP 请求?
目前,Amazon CloudFront 支持 GET、HEAD、POST、PUT、PATCH、DELETE 和 OPTIONS 请求。
Amazon CloudFront 是否缓存 POST 响应?
Amazon CloudFront 不会缓存对 POST、PUT、DELETE 和 PATCH 请求的响应,因为这些请求会通过代理返回原始服务器。您可以启用缓存来响应 OPTIONS 的请求。
如何使用 HTTP/2?
如果您已有 Amazon CloudFront 分发,则可以使用 API 或管理控制台来启用 HTTP/2。在控制台中,转到“Distribution Configuration”页面,然后转到“Supported HTTP Versions”部分。 在该部分中,您可以选择“HTTP/2”、“HTTP/1.1”或“HTTP/1.0”。对于所有新的 CloudFront 分发,HTTP/2 自动处于启用状态。
如果我的原始服务器不支持 HTTP/2,该怎么办?
Amazon CloudFront 目前支持使用 HTTP/2 向查看者的客户端和浏览器分发内容。Amazon CloudFront 将继续使用 HTTP/1.1 传送边缘站点与您的原始服务器之间的通信内容。
Amazon CloudFront 是否支持不采用 TLS 的 HTTP/2?
目前不支持。不过,大多数现代浏览器只能通过加密连接支持 HTTP/2。您可以单击此处详细了解如何结合使用 SSL 和 Amazon CloudFront。
什么是 HTTP/3?
HTTP/3 是超文本传输协议的第三个主要版本。HTTP/3 使用 QUIC,这是一种基于用户数据报协议 (UDP) 的流多路复用安全传输协议,结合并改进了现有传输控制协议(TCP)、TLS 和 HTTP/2 的功能。与以前的 HTTP 版本相比,HTTP/3 具有多项优势,包括更快的响应时间和增强的安全性。
什么是 QUIC?
HTTP/3 由 QUIC(一种全新的高性能、弹性且安全的互联网传输协议)提供支持。CloudFront 对 HTTP/3 的支持基于 s2n-quic 构建,这是 Rust 中的一个新开源 QUIC 协议实现。要了解有关 QUIC 的更多信息,请参阅“s2n-quic 简介”博客。
在 Amazon CloudFront 中使用 HTTP/3 的主要好处有哪些?
客户不断寻求为其最终用户提供更快、更安全的应用程序。随着全球互联网普及率的提高,越来越多的用户通过手机和远程网络上网,对提高性能和可靠性的需求比以往任何时候都更大。HTTP/3 实现了这一点,因为,与以前的 HTTP 版本相比,HTTP/3 具有多项性能改进:
- 更快、更可靠的连接 — CloudFront 使用 1-RTT 进行 HTTP/3 的 TLS 握手,与以前的 HTTP 版本相比,缩短了连接建立时间并相应地减少了握手失败。
- 更好的 Web 性能 — CloudFront 的 HTTP/3 实施支持客户端连接迁移,使客户端应用程序能够以最少的中断从不良连接中恢复。与 TCP 不同的是,QUIC 不是无损的,因此它更适合具有高数据包损失的拥塞网络。此外,QUIC 还有助于在 Wifi 或蜂窝传输中更快速地重新连接。
- 安全性 — 与先前版本的 HTTP 相比,HTTP/3 可以在 TLS 握手期间加密交换的数据包,从而提供更全面的安全性。这就增加了中间设备的检查难度,可提高隐私性,并减少中间人攻击。CloudFront 对 HTTP/3 的支持基于 s2n-quic 和 Rust 构建,这两者都非常注重效率和性能。
如何在我的 CloudFront 分发上启用 HTTP/3?
您可以使用 CloudFront 控制台、UpdateDistribution API 操作或使用 Cloudformation 模板在新的和现有 Amazon CloudFront 分发中启用 HTTP/3。在控制台中,转到“Distribution Configuration”(分配配置)页面,然后转到“Supported HTTP Versions”(受支持的 HTTP 版本)部分。 在该部分中,您可以选择“HTTP/3, HTTP/2, HTTP/1.1, or HTTP/1.0”(HTTP/3、HTTP/2、HTTP/1.1 或 HTTP/1.0)
在启用 HTTP/3 之前,我是否需要更改我的应用程序?
在 CloudFront 分发上启用 HTTP/3 时,CloudFront 会自动添加 Alt-Svc 标头,该标头用于告知客户端当前服务支持 HTTP/3,因此您无需手动添加 Alt-Svc 标头。我们希望您在应用程序中启用对多种协议的支持,如果应用程序未能建立 HTTP/3 连接,它将回退至 HTTP /1.1 或 HTTP/2,也就是说,不支持 HTTP/3 的客户端仍可以使用 HTTP/1.1 或 HTTP/2 与启用了 HTTP/3 的 CloudFront 分配的进行通信。回退支持是 HTTP/3 规范不可或缺的一部分,在支持 HTTP/3 的所有主要浏览器中均已实施。
如果我的原始服务器不支持 HTTP/3,该怎么办?
CloudFront 目前在查看者的客户端浏览器与 CloudFront 边缘站点之间的通信中支持 HTTP/3。CloudFront 将继续使用 HTTP/1.1 传送边缘站点与您的原始服务器之间的通信内容。
Amazon CloudFront 的 TLS 安全策略如何与 HTTP/3 交互?
HTTP/3 使用 QUIC,后者需要 TLSv1.3。因此,只有 TLSv1.3 和受支持的 TLSv1.3 密码组可用于建立 HTTP/3 连接,不受您选择的安全策略的影响。有关详细信息,请参阅《CloudFront 开发人员指南》中的“查看者与 CloudFront 之间受支持的协议和密码”部分。
启用 HTTP/3 是否会单独收费?
不会,在 Amazon CloudFront 分发上启用 HTTP/3 不会产生单独的费用。HTTP/3 请求将按照您的定价套餐中的请求价格收费。
Saas Manager
全部打开什么是 CloudFront SaaS Manager?
CloudFront SaaS Manager 是 Amazon CloudFront 的一项新功能,可帮助软件即服务(SaaS)和 Web 开发平台提供商高效管理多个网站的内容分发。该功能可简化组织大规模交付多租户应用程序并保障其安全的方式。通过引入可重复使用的配置和参数,CloudFront SaaS Manager 减少了运营开销。它可以省去重复的配置工作,并使客户能够在其不同网站间保持一致的设置。此外,CloudFront SaaS Manager 还提供可选的灵活性,支持根据需求为每个网站自定义安全设置,并自动完成证书续期。
谁应该使用 CloudFront SaaS Manager?
CloudFront SaaS Manager 专为面临高效管理多个网站挑战的组织设计。软件即服务(SaaS)和 Web 开发平台提供商将发现该功能特别有价值,因为它能帮助他们在租户的各网站间保持一致的设置。同样,管理多个企业网站的公司也可以借助它来标准化其 Web 形象,同时保留对各个网站进行自定义的灵活性。如果你只有少数几个网站,或每个网站都包含不同的 CloudFront 配置,则单租户(传统)分发可能更合适您。
如何开始使用 CloudFront SaaS Manager?
希望跨多组域管理共享设置的客户可通过 AWS 管理控制台和 API 选择使用 CloudFront。操作步骤如下:1/ 定义共享设置:创建多租户分发,其中包含的共享设置将用作多组域的模板。2/ 创建分发租户:创建分发租户,让您可以将域及其 TLS 证书与多租户分发关联。3/ 微调控制:(可选)通过应用替代来自定义分发租户的设置。
什么是多租户分发?
多租户分发定义将在多个域间共享的基础配置,包含源配置、缓存行为和安全设置等共享配置设置。与标准分发不同,多租户分发无法直接处理流量。它提供可自定义的参数化字段,以满足每个域的独特需求。例如:特定于域的源路径或源域名。
什么是分发租户?
分发租户指的是使用多租户分发的特定域。它从多租户分发中继承基础配置,并且必须拥有至少一个带有有效 TLS 证书的域或子域。
每个分发租户都可以包含以下自定义设置:
- 唯一的源路径和/或源域名(通过多租户分发中的参数值定义)
- 自定义 TLS 证书
- Web ACL 覆盖
- 地理限制覆盖
我已经有某个证书颁发机构(CA)构建的证书工作流,能否继续将这些证书用于 CloudFront SaaS Manager?
可以。不过,CloudFront 会与 AWS Certificate Manager(ACM)协同工作,以提供无缝的域控制验证体验。与 ACM 的集成可消除证书颁发和管理的负担,并为 Amazon 颁发的 SSL/TLS 证书提供自动化生命周期管理。如果您使用其他证书颁发机构(CA)颁发证书,ACM 同样支持第三方 CA 颁发的证书。在这种情况下,您需要负责证书的生命周期管理(初始上传、续期、后续上传),当证书临近过期时,ACM 会通过 CloudWatch 和电子邮件向 AWS 账户所有者发送通知。有关更多详细信息,可访问 https://aws.amazon.com/certificate-manager/faqs/。
我有客户使用 Apex 域来处理流量,能否将这类域用于 CloudFront?
可以,CloudFront 支持 Apex 域或根域(例如 example.com 与 www.example.com)。客户可以使用 Route 53 来管理 DNS,并为 Apex 域添加 ALIAS 记录,使其指向 CloudFront 提供的域。对于无法使用 Route 53 来管理自定义域的客户,任播静态 IP 可提供一组专用 IP 地址,用于替代 CNAME/ALIAS 记录。单击此处了解更多信息。
使用 CloudFront SaaS Manager 是否需要单独付费?
是的。CloudFront 基于您创建的分发租户资源数量收费。分发租户是从 CloudFront 多租户分发继承配置设置的新资源。有关详细信息,请参阅 CloudFront 定价页面。
WebSocket
全部打开什么是 WebSocket?
WebSocket 是一种实时通信协议,通过长时间保持的 TCP 连接实现客户端与服务器之间的双向通信。通过使用持续的开放连接,客户端和服务器可以互相发送实时数据而不必频繁地重新启动连接以检查是否有要交换的数据。WebSocket 连接通常用于聊天应用程序、协作平台、多人游戏和金融交易平台。请参阅我们的文档,以详细了解如何结合使用 WebSocket 协议与 Amazon CloudFront。
如何启用 Amazon CloudFront 分发来支持 WebSocket 协议?
您可以在全局范围内使用 WebSocket,并且不需要额外的配置即可在 CloudFront 资源中启用 WebSocket 协议,因为现在默认情况下支持该协议。
什么时候通过 Amazon CloudFront 建立 WebSocket 连接?
Amazon CloudFront 仅在客户端包含“Upgrade: websocket”标头且服务器响应 HTTP 状态代码 101 以确认其可以切换到 WebSocket 协议时建立 WebSocket 连接。
Amazon CloudFront 是否支持基于 TLS 的安全 WebSocket?
是的。Amazon CloudFront 支持使用 SSL/TLS 协议加密的 WebSocket 连接(WSS)。
gRPC
全部打开什么是 gRPC?
gRPC 是一个现代的开源远程过程调用(RPC)框架,支持客户端和服务器基于长期的 HTTP/2 连接进行双向通信。通过使用持久开放连接,客户端和服务器可以相互发送实时数据,而无需客户端频繁重新启动连接来检查要交换的新数据。gRPC 非常适合低延迟和高传输速度至关重要的使用场景,例如实时通信应用程序和在线游戏。
如何启用我的 Amazon CloudFront 分发以支持 gRPC?
gRPC 需在 CloudFront 分发的每个缓存行为上启用。启用 gRPC 将确保该分发上同时启用 HTTP/2 以及对 POST 请求的支持。gRPC 仅支持基于 HTTP/2 的 POST 方法。
何时通过 Amazon CloudFront 使用 gRPC 通信?
当满足以下条件时,Amazon CloudFront 会通过 gRPC 进行通信:
- 已在您的分发上启用 HTTP/2
- 已在缓存行为上启用 POST 请求和 gRPC
- 客户端通过 HTTP/2 连接发送值为“application/grpc”的“content-type”标头
在 Amazon CloudFront 中使用 gRPC 的主要好处有哪些?
- 安全性 — gRPC 使用 HTTP/2,可确保从客户端到原始服务器的流量经过端到端加密。此外,使用 gRPC 时,您可以免费获得 AWS Shield Standard,并且可以配置 AWS WAF 来帮助保护 gRPC 流量免受攻击。
- 更好的性能 — gRPC 采用一种称为协议缓冲区的二进制消息格式,它比传统有效载荷(如用于 RESTful API 的 JSON)更小。解析协议缓冲区的 CPU 占用率较低,因为数据是二进制格式,这意味着消息交换速度更快。这样就可以提高整体性能。
- 内置流式传输支持 — 流式传输是 gRPC 框架的内置部分,支持客户端和服务器端流式传输语义。这使得构建流服务或客户端变得更加简单。CloudFront 上的 gRPC 支持以下流式传输组合:
- 一元(无流式传输)
- 客户端到服务器的流式传输
- 服务器到客户端的流式传输
- 双向流式传输
CloudFront 是否支持基于 HTTP/3 的 gRPC?
目前不支持。CloudFront 仅支持基于 HTTP/2 的 gRPC。
安全性
全部打开是否可以将 CloudFront 分发配置为使用自己的域名通过 HTTPS 分发内容?
默认情况下,您可以在 URL 中使用 CloudFront 分发域名(例如 https://dxxxxx.cloudfront.net/image.jpg)通过 HTTPS 向浏览者分发内容。如果您想使用自己的域名和 SSL 证书通过 HTTPS 传送内容,则可以使用一项我们的自定义 SSL 证书支持功能。 了解详情。
什么是字段级加密?
字段级加密是 CloudFront 的一项功能,使您可以安全地将用户提交的数据(如信用卡号)上传到您的原始服务器。使用此功能,您可以在将 PUT/POST 请求转发到您的源之前,使用特定于字段的加密密钥(由您提供)对 HTTPS 表单中的敏感数据进行进一步加密。这可确保敏感数据只能被应用程序堆栈中的某些组件或服务解密和查看。要了解有关字段级加密的更多信息,请参阅我们文档中的字段级加密。
我已经在使用 CloudFront 的 SSL/TLS 加密,是否还需要使用字段级加密?
许多 Web 应用程序会从用户那里收集信用卡号等敏感数据,然后交由在来源基础设施上运行的应用程序服务处理。所有这些 Web 应用程序都在最终用户和 CloudFront 之间以及 CloudFront 和您的源之间使用 SSL/TLS 加密。您的源可能有多个微服务,它们根据用户输入执行关键操作。然而在通常情况下,这些微服务中仅有一少部分需要访问敏感信息,这意味着大多数组件都是没有任何缘由便直接访问这些数据。一个简单的编程错误(如将错误的变量记录在日志中)便可能会导致将客户的信用卡号写到一个文件中。
使用字段级加密,CloudFront 的边缘站点可以对信用卡数据进行加密。从那时起,只有拥有私钥的应用程序才能解密敏感字段。因此,订单履行服务只能查看加密的信用卡号,但付款服务可以解密信用卡数据。这可以确保更高的安全性,因为即使其中一个应用程序服务泄露了密文,数据仍然受到密码保护。
SNI 自定义 SSL 与 Amazon CloudFront 的专用 IP 自定义 SSL 之间有什么区别?
专用 IP 自定义 SSL 会分配专用 IP 地址,以便在每个 CloudFront 边缘站点提供您的 SSL 内容。由于 IP 地址与 SSL 证书之间是一对一映射,因此专用 IP 自定义 SSL 可兼容不支持 SNI 的浏览器和其他客户端。受当前 IP 地址成本影响,专用 IP 自定义 SSL 的费用为每月 600 美元,按小时按比例计费。
SNI 自定义 SSL 依赖传输层安全性协议(TLS)的 SNI 扩展功能,通过包含查看者尝试连接的主机名,允许多个域名通过同一 IP 地址提供 SSL 流量。与专用 IP 自定义 SSL 一样,CloudFront 也是从每个 Amazon CloudFront 边缘站点分发内容,同时具备与专用 IP 自定义 SSL 功能相同的安全性。SNI 自定义 SSL 可使用大部分现代浏览器,包括 Chrome V 6 和更高版本(运行于 Windows XP 和更高版本或 OS X 10.5.7 和更高版本上之上)、Safari V 3 和更高版本(运行于 Windows Vista 和更高版本或 Mac OS X 10.5.6. 和更高版本之上)、Firefox 2.0 和更高版本,以及 Internet Explorer 7 和更高版本(运行于 Windows Vista 和更高版本之上)。不支持 SNI 的较老浏览器无法与 CloudFront 建立连接以加载您的内容的 HTTPS 版本。除了标准 CloudFront 数据传输和请求费用外,SNI 自定义 SSL 不收取额外费用。
什么是服务器名称指示?
服务器名称指示(SNI)是传输层安全性协议(TLS)的延伸。该机制识别相关 SSL 请求相关的域(服务器名称)以便在 SSL 握手时使用适当的证书。这允许单个 IP 地址用于多个服务器。SNI 要求浏览器支持添加服务器名称,尽管大部分现代浏览器都支持,但是还有一些旧版浏览器不支持。想要了解更多详细信息,请参阅 CloudFront 开发人员指南中的 SNI 部分,或 SNI Wikipedia 文章。
CloudFront 是否与 AWS Certificate Manager 实现了集成?
是的,您现在可以预置 SSL/TLS 证书,并在几分钟内将其与 CloudFront 发布版关联起来。只需使用全新的 AWS Certificate Manager (ACM) 预置证书,然后单击几下鼠标将其部署到您的 CloudFront 发布版,之后让 ACM 为您管理证书更新即可。借助 ACM,您可以预置、部署并管理证书,且无需支付额外费用。
请注意,CloudFront 仍然支持使用您从第三方证书机构获得并上传至 IAM 证书存储的证书。
Amazon CloudFront 是否支持付费内容或私有内容的访问控制?
是,Amazon CloudFront 具有一项针对私有内容的可选访问控制功能。启用此选项时,Amazon CloudFront 将对您的请求进行安全签名,仅在您允许时才传输文件。通过阅读 CloudFront 开发人员指南了解有关此功能的更多信息。
如何保护我的 Web 应用程序在通过 CloudFront 传输信息时免受 DDoS 攻击?
作为 AWS 客户,您可以免费获得 AWS Shield Standard。AWS Shield 是一项托管服务,用于保护 AWS 上运行的 Web 应用程序免受 DDoS 攻击。AWS Shield Standard 可以保护所有 AWS 客户免受常见的、较为频繁的基础设施层(第 3 层和第 4 层)攻击(如 SYN/UDP 洪泛、反射攻击和其他攻击),确保 AWS 上的应用程序具有较高的可用性。
AWS Shield Advanced 是一项可选的付费服务,面向 AWS Business Support 和 AWS Enterprise Support 的客户提供。AWS Shield Advanced 能为弹性负载均衡(ELB)、Amazon CloudFront 和 Route 53 上运行的应用程序提供额外保护,使其免受更大型、更复杂的攻击。
如何保护通过 CloudFront 分发的 Web 应用程序?
您可以将您的 CloudFront 分发与 AWS WAF 进行集成,AWS WAF 是一个 Web 应用程序防火墙,让您能够根据 IP 地址、HTTP 标头和自定义 URI 字符串配置规则,从而有助于保护 Web 应用程序免受攻击。借助这些规则,AWS WAF 能够阻止、允许或监控(统计)Web 应用程序的 Web 请求。要了解更多信息,请参阅 AWS WAF 开发人员指南。
我应该如何使用 CloudFront 来保护我的源?
CloudFront 提供两种完全托管的方式来保护您的源:
- 源访问控制(OAC):CloudFront 源访问控制(OAC)是一种安全功能,可限制对 Amazon Simple Storage Service(S3)源、AWS Elemental 源和 Lambda 函数 URL 的访问,确保只有 CloudFront 可以访问内容。
- VPC 源:CloudFront 虚拟私有云(VPC)源允许您使用 Amazon CloudFront 从托管在 VPC 私有子网中的应用程序传送内容。您可以将应用程序负载均衡器(ALB)、网络负载均衡器(NLB)和私有子网中的 EC2 实例用作 CloudFront 的 VPC 源
如果 CloudFront 托管解决方案不能满足您的使用案例要求,以下是一些可用的替代方法:
- 自定义源标头:使用 CloudFront,您可以将自定义标头附加到传入请求,然后配置源以验证这些特定标头值,从而有效地将访问限制为仅通过 CloudFront 路由的请求。此方法会额外创建一个身份验证层,从而大大降低未经授权直接访问源的风险。
- IP 允许列表:您可以配置源的安全组或防火墙,以专门允许来自 CloudFront 的 IP 范围的传入流量。为方便起见,AWS 会维护并定期更新这些 IP 范围。有关实施 IP 允许列表的详细信息,请参阅我们的综合文档:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/LocationsOfEdgeServers.html#managed-prefix-list。此资源提供有关利用 AWS 托管前缀列表实现最佳安全配置的分步指导。
- SSL/TLS 加密:您可以将 CloudFront 配置为专门使用 HTTPS 连接来连接您的源,从而通过 CloudFront 分发和源之间的加密通信实现端到端数据保护。
VPC 源
全部打开什么是 VPC 源?
CloudFront 虚拟私有云(VPC)源是一项新功能,允许您使用 CloudFront 从托管在 VPC 私有子网中的应用程序传送内容。使用 VPC 源,您可以将应用程序置于 VPC 的私有子网中,该子网只能通过 CloudFront 分发进行访问。这消除了对源具有外部可解析的域名服务(DNS)名称的要求。您可以使用在应用程序负载均衡器(ALB)、网络负载均衡器(NLB)和 EC2 实例上运行的应用程序来设置 VPC 源。VPC 源仅在 AWS 商业区域可用,支持的 AWS 区域的完整列表可在此处查看。
为什么应该使用 VPC 源?
如果您希望增强 Web 应用程序的安全性,同时保持高性能和全球可扩展性,则应将 VPC 源与 CloudFront 结合使用。通过 VPC 源,您可以限制只有 CloudFront 分发才能访问 VPC 中的源,而无需进行诸如秘密标头或访问控制列表之类的复杂配置。VPC 源还让您可以免费路由到具有内部 IPv4 IP 地址的私有子网中的源,从而优化您的 IPv4 成本。如果您想简化安全管理,VPC 源是完美的选择,它可以让您更加专注于发展核心业务,而不是管理复杂的安全措施。
将 VPC 源与 Amazon CloudFront 结合使用的主要好处有哪些?
- 安全性 — 借助 VPC 源,您可以将负载均衡器和 EC2 实例放置在私有子网中,使 CloudFront 成为唯一的入口点,从而加强应用程序的安全状况。用户请求通过私有、安全的连接从 CloudFront 传输到 VPC 源,从而提高应用程序的安全性。
- 管理 — VPC 源允许您将源移动到没有公共访问权限的私有子网,而无需实施访问控制列表、秘密共享标头或其他限制源访问权限的机制,从而减少安全地 CloudFront - 源连接所需的运营开销。这样,您就可以轻松使用 CloudFront 来保护他们的 Web 应用程序,而无需投资于无差别的开发工作。
- 可扩展且性能出色 — 借助 VPC 源,客户可以使用 CloudFront 的全球边缘站点和 AWS 主干网络,享受与其他现有内容分发方法类似的规模和性能,同时改善安全状况。该解决方案可简化安全管理,同时为客户提供全球应用程序交付,使您可以轻松将 CloudFront 用作应用程序的单一前门。
VPC 源如何与 AWS VPC 屏蔽公共访问权限配合使用?
CloudFront 虚拟私有云(VPC)源允许您使用 CloudFront 通过应用程序负载均衡器、网络负载均衡器和 EC2 实例从托管在 VPC 私有子网中的应用程序传送内容。Amazon VPC 屏蔽公共访问权限(VPC BPA)是一种简单的声明性控制,它通过 AWS 提供的互联网路径权威地阻止传入(入口)和传出(出口)VPC 流量。在具有 VPC 源的子网上启用 VPC BPA 时,来自 CloudFront 的活动连接将终止于该子网。不会向该子网发送新的连接,而是将其路由到 VPC 源所在的其他子网(未启用 BPA),或者如果 VPC 源所在的所有子网都启用了 BPA,则该连接会被丢弃。
VPC 源支持哪些资源?
VPC 源支持应用程序负载均衡器、网络负载均衡器和 EC2 实例。
VPC 源支持 IPv6 吗?
不,VPC 私有源不支持 IPv6。使用 VPC 源需要私有 IPv4 地址,这些地址是免费的,并且不会产生 IPv4 费用。
缓存
全部打开是否可以添加或修改转发到源的请求标头?
可以,对于转发到源的请求,您可以配置 Amazon CloudFront 以添加自定义标头,或覆盖现有标头的值。您可以使用这些标头帮助确认对源的请求发自 CloudFront;您甚至可以将自己的源配置为仅允许包含指定自定义标头值的请求。此外,如果要对同一个源使用多个 CloudFront 分配,您可以使用自定义标头来区分每个不同分配所发送的源请求。最后,自定义标头可用来帮助确定为您的请求返回的正确 CORS 标头。您可以通过 CloudFront API 和 AWS 管理控制台来配置自定义标头。此功能不会产生额外的费用。要详细了解如何设置自定义标头,您可以在此处阅读更多内容。
Amazon CloudFront 如何处理 HTTP Cookie?
Amazon CloudFront 如何处理 URL 中的查询字符串参数?
您可以选择将查询字符串配置为缓存键的一部分,以便识别 Amazon CloudFront 缓存中的对象。这有助于您构建可在边缘站点上缓存特定时间的动态网页(例如搜索结果)。
能否在缓存键中指定使用哪些查询参数?
可以。借助查询字符串白名单功能,您在缓存键中仅使用特定参数即可轻松配置 Amazon CloudFront,同时仍将所有参数转发到相应源中。
可列入白名单的查询参数是否有数量限制?
是的。配置 Amazon CloudFront 时,您最多可将 10 个查询参数添加到白名单。
支持哪些参数类型?
Amazon CloudFront 支持 URI 查询参数(如 RFC3986 的 3.4 节中所定义)。具体而言,它支持嵌入在 HTTP GET 字符串中“?”字符后,并通过“&”字符分隔的查询参数。
CloudFront 是否支持 gzip 压缩?
支持。CloudFront 可以自动压缩文本或二进制数据。要使用此功能,只需在您的缓存行为设置中指明您希望 CloudFront 自动压缩对象,并确保您的客户端在请求标头中添加“Accept-Encoding: gzip”(大多数现代 Web 浏览器默认执行此操作)。有关此功能的更多信息,请参阅我们的开发人员指南。
流式传输
全部打开什么是流式处理? 为什么我需要流式处理?
通常情况下,流式处理指的是通过 Internet 向最终用户分发音频和视频,而无需在播放前下载媒体文件。用于流式处理的协议包括那些使用 HTTP 进行分发的协议,如 Apple 的 HTTP Live Streaming (HLS)、MPEG Dynamic Adaptive Streaming over HTTP (MPEG-DASH)、Adobe 的 HTTP Dynamic Streaming (HDS) 和 Microsoft Smooth Streaming。这些协议与网页和其他在线内容的分发不同,因为流式处理协议是实时分发媒体内容,查看者可在内容传输的同时进行观看。流式处理内容可为您和最终用户提供多种潜在优势:
- 流式处理让查看者能够更多地控制观看体验。例如,与使用传统下载分发相比,使用流式处理让查看者能够更轻松地在视频中向前和向后搜寻。
- 流式处理让您能够更好地控制内容,因为在查看者看完视频之后,其客户端或本地驱动器上不会留存任何文件。
- 流式处理能够帮助您降低成本,因为它只分发查看者实际观看的那部分媒体文件。相反,传统下载通常会向查看者分发整个媒体文件,即便他们仅观看文件的一部分也是如此。
Amazon CloudFront 是否支持视频点播(VOD)流式处理协议?
支持。Amazon CloudFront 会为您提供多种选项,方便您分发点播视频内容。如果您的媒体文件在存储到 Amazon S3(或自定义源服务器)之前已经使用 AWS Elemental MediaConvert 等工具转换为 HLS、MPEG-DASH 或 Microsoft Smooth Streaming 格式,则您可以使用 Amazon CloudFront Web 分发来流式传输此格式文件,而无需运行任何媒体服务器。
另外,您还可以在 Amazon EC2 上运行第三方流式处理服务器(例如,AWS Marketplace 上提供的 Wowza Media Server),它会将媒体文件转换为所需的 HTTP 流格式。然后,可以将该服务器指定为 Amazon CloudFront Web 分发的原始服务器。
请在 AWS 页面访问视频点播(VOD),以了解更多信息。
Amazon CloudFront 是否支持将实时流传输到多个平台?
是的。您可以将 Amazon CloudFront 实时流与任何可输出基于 HTTP 的流的实时视频创作服务(例如 AWS Elemental MediaPackage 或 AWS Elemental MediaStore)结合使用。MediaPackage 是一种视频创作和即时打包服务,支持视频分销商使用多种交付和内容保护标准,以安全可靠的方式大规模分发流内容。MediaStore 是一种 HTTP 创作和存储服务,可提供实时媒体所需的高性能、即时一致性和可预测的低延迟,以及安全持久的 Amazon 存储。
请访问 AWS 实时视频流页面,了解更多信息。
什么是媒体质量感知弹性?
媒体质量感知弹性(MQAR)是 Amazon CloudFront 与 AWS Media Services 之间的一项集成功能,它可以根据动态生成的视频质量分数提供跨区域源选择和失效转移。借助 MQAR,您可以在两个不同的 AWS 区域中部署一个冗余的 AWS 媒体服务工作流,以实现弹性的直播活动交付。当您为分发启用 MQAR 功能时,就会授权 CloudFront 自动选择被认为具有最高质量分数的源。质量分数代表您从源感知到的媒体流式传输质量问题,例如黑帧、冻结帧、丢帧或者重复帧。例如,如果您的 AWS Elemental MediaPackage v2 源部署在两个不同的 AWS 区域中,而且一个区域报告的媒体质量分数高于另一个区域,CloudFront 会自动切换到报告更高分数的那个源。此功能模拟持续“监控”,以提供直播活动和全天候节目频道,旨在帮助为观众提供高质量的体验。您可以在 CloudFront 开发人员指南中阅读有关 MQAR 的更多信息。
Origin Shield
全部打开什么是 Origin Shield?
Origin Shield 是一个集中化的缓存层,有助于提高缓存命中率,从而减少源服务器上的负载。Origin Shield 还可以跨区域折叠请求,以便只有一个请求传入每个对象的源服务器,从而降低源服务器的运维成本。启用后,CloudFront 会通过 Origin Shield 路由所有源服务器提取,并且如果内容尚未存储在 Origin Shield 缓存中,则 CloudFront 只会向源服务器发送一个请求。
我应何时使用 Origin Shield?
Origin Shield 非常适合观众分布在不同地理区域的工作负载,或者涉及视频流的即时打包、传输中图像处理或类似过程的工作负载。Origin Shield 置于源服务器之前将减少源服务器提取的冗余数量,方法是首先检查其中心缓存,并仅对 Origin Shield 缓存中尚未包含的内容进行合并的源服务器提取。类似地,Origin Shield 还可以在多 CDN 架构中使用,通过将 Amazon CloudFront 定位为其他 CDN 的源服务器来减少跨 CDN 的重复源服务器提取次数。请参阅《Amazon CloudFront 开发人员指南》,了解与之相关的更多详细信息以及其他 Origin Shield 应用场景。
Origin Shield 是否具有弹性和高可用性?
可以。所有 Origin Shield 区域均使用跨多个可用区的高度可用架构进行构建,并且具有 auto-scaling Amazon EC2 实例队列。如果 Origin Shield 主位置不可用,则从 CloudFront 位置到 Origin Shield 的连接还会对每个请求使用活动错误跟踪,从而将请求自动路由到 Origin Shield 备用位置。
任播静态 IP
全部打开什么是任播静态 IP?
Amazon CloudFront 的任播静态 IP 是一组静态 IP 地址,允许您连接到全球所有 CloudFront 边缘站点。它们提供了一个小型的静态 IP 列表,可用于零费率计费(网络提供商在适当协议下免除特定 IP 地址的数据费用)以及为加强安全状况而设置客户端允许列表等使用案例。通过使用任播静态 IP,可以消除不断更新允许列表或 IP 映射的操作挑战,因为同一组 IP 适用于 CloudFront 的整个全球网络,同时仍然可以享受 CloudFront 的所有功能。
如何在 CloudFront 上启用任播静态 IP?
要启用任播静态 IP,需要先在您的 AWS 账户中请求并创建一个任播静态 IP 列表。创建列表后,您可以将 CloudFront 分发与任播静态 IP 列表关联。这可以通过 AWS 管理控制台上的任播静态 IP 部分来完成,或者通过编辑每个分发并从下拉菜单中选择所需的任播静态 IP 列表来完成。保存这些更改后,您可以从 AWS 管理控制台中显示的列表或通过 API 复制或下载与您的分发关联的特定静态 IP 地址集
启用 CloudFront 任播静态 IP 后,我将收到多少个 IP 地址?
启用 CloudFront 任播静态 IP 后,您将收到 21 个 IPv4 的 IP 地址。您需要将所有这些 IP 地址添加到任何相关的允许列表中。
我是否可以仅针对特定地理区域获取 CloudFront 任播静态 IP?
不可以。CloudFront 任播仅适用于分布在不同地理区域的 IP。
当 CloudFront 在其网络中添加更多边缘站点时,会发生什么?
随着 CloudFront 添加新的边缘站点,您的任播静态 IP 列表将继续保持有效。我们将酌情公布来自新边缘站点的 IP。
任播静态 IP 如何与现有功能和其他 AWS 服务配合使用?
所有 CloudFront 功能均可与任播配合使用,但有三个明显的例外:1/ 任播静态 IP 不支持无法支持 SNI 的旧客户端,2/ 使用任播静态 IP 时,需要使用价格级别“所有”,3/ 使用任播静态 IP 时,必须禁用 IPv6。任播静态 IP 在 DNS 解析阶段工作,一旦请求到达主机,所有现有功能以及与其他 AWS 服务的集成将继续可供您的分发使用。
我可以将一组任播 IP 地址用于多个分发,还是只能用于单个分发?
您可以将任播静态 IP 与多个分发一起使用,但它们必须位于同一个账户中。CloudFront 任播静态 IP 可与账户中的多个分发关联。CloudFront 任播静态 IP 将支持服务器名称指示(SNI),以便从与其任播静态 IP 策略关联的任意数量的分发中返回正确的证书。如果您希望为账户中的多个分发设置不同的静态 IP,则可以创建额外的任播静态 IP 列表,并将它们关联到特定分发。
当我创建新的分发时,会发生什么?
在启用了任播静态 IP 的账户中创建新的分发时,必须将新分发与现有的任播静态 IP 列表明确关联。默认情况下,该分发将使用动态 IP 地址,直到您将其链接到静态 IP 列表。
限制
全部打开如果预期使用峰值高于 150 Gbps 或 250000 RPS,我可以使用 Amazon CloudFront 吗?
可以。请在此处填写提高限制请求,我们将在两个工作日之内为您的账户添加更多容量。
我的 Amazon CloudFront 账户可以传输的分发数量是否受到限制?
有关可为每个 AWS 账户创建的分发数量的当前限制,请参阅“Amazon Web Services 一般参考”中的 Amazon CloudFront 限制。如需请求提高限制,请填写 CloudFront 提高限制申请表。
通过 Amazon CloudFront 最多能够传输多大的文件?
通过 Amazon CloudFront 最多能够传输 30 GB 大小的单个文件。此限制适用于所有 Amazon CloudFront 分发。
日志记录和报告
全部打开Amazon CloudFront 提供哪些日志记录功能?
- 标准日志(访问日志)CloudFront 标准日志提供有关向分发发出的每个请求的详细记录。这些日志对于许多场景都很有用,包括安全和访问审计。
- 实时日志 CloudFront 实时日志实时提供有关向分发发出的请求的信息(日志记录在收到请求后的几秒钟内传送)。您可以选择实时日志的采样率 — 即希望接收实时日志记录的请求的百分比。
- 记录边缘函数:您可以使用 Amazon CloudWatch Logs 获取边缘函数(Lambda@Edge 和 CloudFront Functions)的日志。您可以使用 CloudWatch 控制台或 CloudWatch Logs API 访问日志。有关详细信息,请参阅 Edge 函数日志。
- 记录服务活动:您可以使用 AWS CloudTrail 在 AWS 账户中记录 CloudFront 服务活动(API 活动)。CloudTrail 提供 CloudFront 中用户、角色或 AWS 服务执行的 API 操作的记录。使用 CloudTrail 收集的信息,您可以确定向 CloudFront 发出的 API 请求、发出请求的 IP 地址、发出请求的人员、发出请求的时间以及其他详细信息。有关更多信息,请参阅使用 AWS CloudTrail 记录 Amazon CloudFront API 调用。
哪些日志传送目的地可用于 CloudFront 日志传送?
- CloudFront 标准日志会传送到您选择的 Amazon S3 存储桶、Amazon CloudWatch Logs 和 Amazon Data Firehose。有关更多信息,请参阅使用标准日志(访问日志)。
- CloudFront 实时日志将传送到您在 Amazon Kinesis Data Streams 中选择的数据流。CloudFront 除了收取因使用 Kinesis 数据流产生的费用外,还针对实时日志进行收费。有关更多信息,请参阅使用实时日志。
- CloudFront 边缘函数日志(Lambda@Edge 和 CloudFront Functions)将传送到 Amazon CloudWatch Logs
标准访问日志具有哪些功能?
CloudFront 标准访问日志可以传送到 Amazon S3、Amazon CloudWatch 和 Amazon Data Firehose。您可以选择输出日志格式(纯文本、w3c、JSON、csv 和 parquet)。您可以选择要记录的字段以及这些字段以何种顺序包含在日志中。对于传送到 S3 的日志,您还可以为其启用分区,即将日志配置为按小时或按天自动分区。您还可以将标准访问日志传送到选择加入 AWS 区域的 S3 存储桶。要了解更多信息,请参阅《CloudFront 开发人员指南》的标准访问日志部分。
启用 CloudFront 标准访问日志是否需要单独付费?
CloudFront 不会对启用标准日志收费,但您需要根据日志传送目的地支付日志传送、存储和访问费用。如需了解更多信息,请参阅 CloudFront 定价页面的“附加功能”部分。
Amazon CloudFront 是否提供直接可用的报告,方便我了解与使用量、查看者和当前服务内容有关的更多信息?
可以。Amazon CloudFront 提供多种解决方案满足您对报告功能的需求,包括接收详细缓存统计报告,监控 CloudFront 使用量,了解客户从何处查看内容,以及对可操作指标设置几乎实时的警报。在 AWS 管理控制台中访问 Amazon CloudFront 报告与分析控制面板,即可使用所有报告选项。您还可以通过查看 Amazon CloudFront 的报告和分析页面,了解关于各种报告选项的更多信息。
我能否标记分发?
可以。Amazon CloudFront 支持成本分配标记。标签通过对 AWS 资源进行分类和分组,从而让您能够轻松分配成本和优化支出。例如,您可以使用标签按管理员、应用程序名称、成本中心或特定项目对资源进行分组。要了解有关成本分配标记的更多信息,请参阅使用成本分配标签。如果您已准备好向 CloudFront 分发添加标签,请参阅 Amazon CloudFront 添加标签页面。
我能否获得我账户上所有的 Amazon CloudFront API 调用历史记录,以用于安全性、操作性或合规性审核?
可以。要获得由您的账户发起的所有 Amazon CloudFront API 调用历史记录,只需在 CloudTrail 的 AWS 管理控制台中打开 AWS CloudTrail。有关更多信息,请访问 AWS CloudTrail 主页。
你们是否提供对指标进行实时监控和警报的选项?
您可以使用 Amazon CloudWatch 在查看者发出请求的几分钟内监控、发出报警并接收有关 Amazon CloudFront 分发运行性能的通知。CloudFront 每隔 1 分钟向 Amazon CloudWatch 自动发布六个运行指标。您可以使用 CloudWatch 针对 CloudFront 流量中的任何异常情况设置警报。要了解如何开始通过 CloudWatch 监控 CloudFront 活动和设置警报,请在 Amazon CloudFront 开发人员指南中查看我们的操作步骤,或者只需导航到 Amazon CloudFront 管理控制台,然后在导航窗格中选择“监控和告警”。
如何确定适合我的应用场景的 CloudFront 日志?
您可以根据您的使用案例选择目标。如果您拥有时效性很强的使用案例且需要在几秒内快速访问日志数据,则选择实时日志。如果您需要成本更低的实时日志管道,您可以通过仅为特定缓存行为启用日志或选择较低的采样率来选择筛选日志数据。实时日志管道的构建是为了快速传送数据。因此,如果发生数据延迟,日志记录可能会被删除。另一方面,如果您需要低成本的日志处理解决方案且不需要实时数据,则您适合使用当前的标准日志选项。S3 中的标准日志为完整性而构建,且日志通常在几分钟内即可用。可以为整个分发启用这些日志,而不是特定的缓存行为。因此,如果您需要日志进行临时调查、审计和分析,您可以选择仅启用 S3 中的标准日志。您可以选择使用这两种日志的组合。使用经过筛选的实时日志列表,以获取操作可见性,然后使用标准日志进行审计。
有哪些可用的不同日志目标选项?
CloudFront 标准日志将传送到您的 S3 存储桶中。您还可以使用 DataDog 和 Sumologic 等第三方解决方案构建的集成来从这些日志中创建控制面板。
实时日志将传送到您的 Kinesis Data Stream。从 Kinesis Data Streams 中,可以将日志发布到 Amazon Kinesis Data Firehose。Amazon Kinesis Data Firehose 支持将日志轻松传送至 Amazon S3、Amazon Redshift、Amazon OpenSearch Service 以及 Datadog、New Relic 和 Splunk 等服务提供商。Kinesis Firehose 还支持将数据传送到通用的 HTTP 端点。
我的 Kinesis Data Stream 中需要多少 Kinesis 分片?
使用下列步骤估算您需要的分片数量:
- 计算(或估算)您的 CloudFront 分发每秒钟接收的请求数。您可以使用 CloudFront 使用报告或 CloudFront 指标来帮助计算您每秒的请求数。
- 确定单个实时日志记录的典型大小。包含所有可用字段的一个典型记录约为 1KB。如果您不确定您的日志记录大小,您可以启用低采样率(例如 1%)的实时日志,然后使用 Kinesis Data Streams 中的监测数据计算记录平均大小(记录总数除以总的传入字节数)。
- 将每秒钟的请求数(从步骤 1 中)乘以典型的实时日志记录大小(从步骤 2 中),以确定您的实时日志配置每秒可能发送到 Kinesis 数据流的数据量。
- 使用每秒钟的数据量计算您需要的分区数量。单个分区每秒可处理不超过 1MB 的数据量及 1000 个请求(日志记录)。计算您需要的分区数量时,我们建议最多增加 25% 作为缓冲。
例如,假设您的分发每秒接收 10000 个请求,且您的实时日志记录的典型大小是 1KB。这意味着,您的实时日志配置每秒可以生成 10000000 个字节(10000 乘以 1000)或者 9.53MB 的数据量。在此情况下,您只需要 10 个 Kinesis 分区。您应该考虑至少创建 12 个分片,以便拥有一些缓冲区。
CloudFront Functions
全部打开什么是 CloudFront Functions?
CloudFront Functions 是一种无服务器边缘计算功能,允许您在 CloudFront 边缘站点运行 JavaScript 代码以进行轻量级 HTTP(s) 转换和操作。专门构建 Functions 以使客户能够灵活地获得完整编程环境,并达到现代 Web 应用程序要求的性能和安全性。客户可以即时扩展,并以经济的方式支持每秒数以百万计的请求,费用只有 AWS Lambda@Edge 的一小部分。
如何使用 CloudFront Functions 自定义内容?
CloudFront Functions 以原生方式构建到 CloudFront 中,让客户能够轻松地在同一服务内构建、测试和部署函数。您还可以将 CloudFront KeyValueStore 与 CloudFront Functions 结合使用,用于存储和检索查询数据以补充您的函数逻辑。我们的 GitHub 存储库提供了大量的示例代码,允许开发人员用作构建函数的起点,以此轻松开始使用该功能。您可以在 CloudFront 控制台上使用 IDE 或 CloudFront API/CLI 构建函数。撰写了代码后,您可以对照生产 CloudFront 分发测试自己的函数,确保该函数部署后可正确地执行。控制台中的测试功能提供了一个可视化编辑器,可以快速创建测试事件并验证函数。与 CloudFront 分发关联之后,代码即部署到 AWS 全球分布的边缘站点网络,并执行对 CloudFront 请求的响应。
CloudFront Functions 的应用场景有哪些?
CloudFront Functions 极其适合轻量级短期运行的函数,例如:
- 缓存键归一化:您可以转变 HTTP 请求属性(标头、查询字符串、Cookie,甚至是请求 URL 的相对路径)以创建最佳缓存键,它可以提高您的缓存命中率。
- 标头操作:您可以在请求或响应中插入、修改或删除 HTTP 标头。例如,您可以向每个响应添加 HTTP 严格传输安全 (HSTS) 或跨源资源共享 (CORS) 标头。
- URL 重定向或重写:您可以根据请求中的信息将查看者重定向到其他页面,或者将调用请求从一个路径重定向到另一个路径。
- 请求授权:您可以通过检查授权标头或其他请求元数据来验证授权令牌,例如 JSON Web 令牌(JWT)。
什么是 CloudFront KeyValueStore?
CloudFront KeyValueStore 是一种全局的、低延迟的、完全托管式键值数据存储解决方案。KeyValueStore 允许您从 CloudFront Functions 中检索键值数据,并且通过独立数据更新提高函数的可自定义性。键值数据可以在所有 CloudFront 边缘站点访问,并采用高效的内存键值存储,可以从 CloudFront Functions 中快速读取。
CloudFront KeyValueStore 的应用场景有哪些?
CloudFront KeyValueStore 是边缘站点频繁读取和不频繁更新的理想选择,例如:
- 维护 URL 重写和重定向:根据地理位置将用户重定向到特定的国家/地区网站。在 KeyValueStore 中存储和更新这些基于地理位置的 URL 可以简化 URL 管理。
- A/B 测试和功能标志:通过为您的网站版本分配一定比例的流量来进行试验。您可以更新实验权重,而无需更新函数代码或 CloudFront 分发。
- 访问授权:通过创建和验证用户生成的令牌,例如 HMAC 令牌或 JSON 网络令牌(JWT),对通过 CloudFront 交付的内容实施访问控制和授权,以允许或拒绝请求。
CloudFront Functions 是否即将取代 Lambda@Edge?
否 — CloudFront Functions 应作为 Lambda@Edge 的补充,而不是取代它。Lambda@Edge 和 CloudFront Functions 的组合可供您为作业挑选正确的工具。您可以选择同时将 CloudFront Functions 和 Lambda@Edge 用在您的 CloudFront 分发中的相同缓存行为内的不同事件触发器上。举例来说,您可以使用 Lambda@Edge 随时操作流式传输清单文件,注入自定义令牌以保护实时流的安全。当用户对清单中的分段提出请求时,您可以使用 CloudFront Functions 验证这些令牌。
我应使用 CloudFront Functions 还是 Lambda@Edge?
CloudFront Functions 和 Lambda@Edge 的组合为您提供了两个强大而灵活的选项,用于在响应 CloudFront 事件时运行代码。二者均可提供安全的方式供您在响应 CloudFront 事件时运行代码,而无需管理基础设施。CloudFront Functions 专用于轻量级、大规模和对延迟敏感的请求/响应转换和操作。Lambda@Edge 使用支持众多计算需要和自定义的通用运行时。您应将 Lambda@Edge 用于计算密集型操作。这可能是需要更长的时间来完成的计算(几毫秒到几秒),需要依赖于外部第三方库,需要与其他 AWS 服务(例如 S3、DynamoDB)集成,或者需要网络调用来进行数据处理。一些流行的高级 Lambda@Edge 使用案例包括 HLS 流清单操作、与第三方授权和自动程序检测服务的集成、单页应用程序(SPA)的服务器端渲染(SSR)等等。请参阅 Lambda@Edge 应用场景页面以了解更多详细信息。
AWS 如何确保 CloudFront Functions 的安全?
CloudFront Functions 带来您期待的性能、规模和成本效益优势,但通过独特的安全模型在函数代码之间提供严格隔离边界。当您在共享的多租户计算环境中运行自定义代码时,维护高度安全的执行环境很关键。坏人可能会尝试利用运行时、库或 CPU 中存在的漏洞,将敏感数据从服务器或其他客户函数中泄漏出去。如果函数代码之间没有严密的隔离屏障,就可能会被这样利用漏洞。AWS Lambda 和 Lambda@Edge 都已通过基于 Firecracker 的 VM 隔离实现了这种安全隔离。通过 CloudFront Functions,我们已开发出基于进程的隔离模型,它可针对旁路攻击(例如,Spectre 和 Meltdown)、基于时间的攻击或其他代码漏洞提供相同的安全性。CloudFront Functions 无法访问或修改属于其他客户的数据。我们通过在专用 CPU 上的专用进程中运行函数实现此目的。CloudFront Functions 在每次仅为一个客户服务的工作进程上执行,在两次执行之间将会清除(刷新)所有客户特定的数据。
CloudFront Functions 不使用 V8 作为 JavaScript 引擎。Functions 的安全模型不同,被认为比 v8 基于部分其他供应商提供的模型进行的隔离更加安全。
如何知道我的 CloudFront Function 是否将成功执行?
您可以使用内置测试功能测试任何函数。测试函数将会针对 CloudFront 分发执行您的代码,以验证函数可返回预期结果。除了验证代码执行之外,还为您提供了计算利用率指标。计算利用率指标向您显示您的函数接近执行时间限制的百分比。例如,计算利用率为 30 表示您的函数使用了总允许执行时间的 30%。测试对象可利用可视化编辑器创建,允许您轻松地为每个对象添加查询字符串、标头、URL 和 HTTP 方法,您也可以使用 JSON 表示形式的请求或响应创建测试对象。运行了测试之后,就可以在相同风格的可视化编辑器中或者通过查看 JSON 响应看到结果和计算利用率指标。如果函数执行成功,且计算利用率指标未接近 100,就表示您的函数关联到 CloudFront 分发时工作正常。
如何监测 CloudFront 函数?
CloudFront Functions 输出指标和执行日志以监测函数的使用情况和性能。每次调用函数都会生成指标,您可以从 CloudFront 或 CloudWatch 控制台上单独查看每个函数的指标。指标包括调用次数、计算利用率、验证错误和执行错误。如果您的函数产生了验证错误或执行错误,则错误消息还将出现在 CloudFront 访问日志中,让您更清晰地了解该函数如何影响您的 CloudFront 流量。除了指标之外,您还可以在函数代码内包括 console.log() 语句以生成执行日志。任何日志语句都将会生成发送到 CloudWatch 的 CloudWatch 日志条目。日志和指标作为 CloudFront Functions 价格的一部分包含在内。
Lambda@Edge
全部打开什么是 Lambda@Edge?
Lambda@Edge 是 AWS Lambda 的扩展,允许您在全球边缘站点运行代码,而无需预置或管理服务器。Lambda@Edge 可为复杂函数提供强大而灵活的无服务器计算,并带来更接近您的查看者的完整应用程序逻辑。Lambda@Edge 函数在 Node.js 或 Python 环境中运行。您将函数发布到单个 AWS 区域,当您关联该函数与 CloudFront 分发时,Lambda@Edge 可自动将您的代码复制到世界上任何地点。Lambda@Edge 可自动扩展,从每天数次请求到每秒数千次。
如何使用 Lambda@Edge 自定义内容?
通过针对 CloudFront 中的特定缓存行为关联函数来执行 Lambda@Edge。您还可以指定函数应在 CloudFront 请求或响应处理期间的哪个点执行(例如,当查看者请求到达时、当请求转发到源或从源返回时,或者就在响应返回最终查看者之前)。您使用 Node.js 或 Python 通过 Lambda 控制台、API 或使用 Serverless Application Model(SAM)之类的框架撰写代码。当您测试函数时,将其与所选 CloudFront 缓存行为和事件触发器关联。保存后,下次对 CloudFront 分发进行请求时,该功能将传播到 CloudFront 边缘,并在必要时扩展和执行。有关更多信息,请参阅我们的文档。
通过 Amazon CloudFront,可以触发哪些 Lambda@Edge 事件?
在响应以下 Amazon CloudFront 事件时,会自动触发您的 Lambda@Edge 函数:
- 查看者请求:当 Internet 上的最终用户或设备向 CloudFront 发出 HTTP(S) 请求,且请求到达离该用户最近的边缘站点时,将触发此事件。
- 查看者响应:当边缘站点处的 CloudFront 服务器已准备好响应发出请求的最终用户或设备时,将触发此事件。
- 来源请求:当 CloudFront 边缘服务器尚未将所请求的对象置入其缓存,且查看者请求已准备好发送给后端来源 Web 服务器(如 Amazon EC2、应用程序负载均衡器或 Amazon S3)时,将触发此事件。
- 来源响应:当边缘站点处的 CloudFront 服务器收到后端来源 Web 服务器的响应时,将触发此事件。
持续部署
全部打开什么是 CloudFront 上的持续部署?
CloudFront 上的持续部署能够在将更改部署到所有查看者之前,使用一部分实时流量测试和验证配置更改的新功能。
CloudFront 的持续部署为您提供了高级别的部署安全性。现在,您可以部署两个独立但相同的环境(蓝色和绿色),轻松集成到持续集成和交付 (CI/CD) 管道,从而能够逐步推出版本,而无需更改任何域名系统 (DNS)。此功能可以将查看器会话绑定到同一环境,从而确保查看器通过会话粘性获得一致体验。此外,您还可以通过监控标准和实时日志对比更改的效果,并在更改对服务产生负面影响时快速恢复到之前的配置。
如何设置 CloudFront 上的持续部署?
您可以通过 CloudFront 控制台、SDK、命令行界面(CLI)或 CloudFormation 模板将暂存分发关联到主要分发来设置持续部署。然后,您可以定义规则来拆分流量,方法是配置客户端标头或拨出一定比例的流量以使用暂存分布进行测试。设置完成后,您可以使用所需的更改更新暂存配置。CloudFront 将管理分配给用户的流量并提供相关分析以帮助您决定是继续部署还是回滚。一旦对暂存分发的测试得到验证,您就可以将更改合并到主要分发中。
要了解有关此功能的更多信息,请访问文档。
我要如何衡量持续部署的结果?
持续部署允许通过实际 Web 流量进行真实的用户监控。您可以使用任何现有的可用监控方法(CloudFront 控制台、CloudFront API、CLI 或 CloudWatch)来单独测量主要和暂存分布的操作指标。您可以通过测量和比较两个分发之间的吞吐量、延迟和可用性指标来衡量特定应用程序的成功标准。
是否可以使用现有分发?
是,您可以使用任何现有分发作为基线来创建暂存分发并引入和测试更改。
持续部署如何与 CloudFront Functions 和 Lambda@Edge 协同工作?
通过持续部署,您可以将不同的功能与主要和临时分布相关联。您还可以对两个发行版使用相同的函数。如果您更新两个分发都使用的函数,则它们都会收到更新。
如何将持续部署分发与 AWS CloudFormation 配合使用?
CloudFormation 堆栈中的每个资源都映射到特定的 AWS 资源。暂存分配将拥有自己的资源 ID,其使用方式与任何其他 AWS 资源一样。您可以使用 CloudFormation 创建/更新该资源。
CloudFront 上的持续部署如何支持会话粘性?
当您使用基于权重的配置将流量路由到暂存分发时,您还可以启用会话粘性,这有助于确保 CloudFront 将来自同一查看者的请求视为单个会话。当您启用会话粘性时,CloudFront 会设置一个 Cookie,以便单个会话中来自同一查看者的所有请求都由一个分发(主要分发或暂存分发)提供服务。
如何收费?
所有 CloudFront 边缘站点均可提供持续部署功能,无需额外付费。
IPv6
全部打开什么是 IPv6?
连接到 Internet 的每个服务器和设备必须拥有的数字 Internet 协议(IP)地址。随着 Internet 的发展和使用 Internet 的用户呈指数增长,对 IP 地址的需求也随之增长。IPv6 是新版 Internet 协议,与其前身 IPv4 相比,IPv6 使用更大的地址空间。在使用 IPv4 时,每个 IP 地址的长度为 32 位,这允许存在 43 亿个唯一的地址。IPv4 地址示例:192.0.2.1。相比之下,IPv6 地址的长度为 128 位,这允许存在大约 340 万亿个唯一的 IP 地址。这里有一个 IPv6 地址的例子:2001:0db8:85a3:0:0:8a2e:0370:7334
IPv6 有什么作用?
使用适用于 Amazon CloudFront 的 IPv6 支持,应用程序无需任何 IPv6 到 IPv4 转换软件或系统即可连接到 Amazon CloudFront 边缘站点。您可以满足政府设定的 IPv6 采用要求(包括美国联邦政府),并受益于 IPv6 可扩展性、网络管理的简便性以及额外的内置安全支持。
在使用 IPv6 时,Amazon CloudFront 的性能是否会发生变化?
不会,无论是使用 IPv4 还是 IPv6,Amazon CloudFront 的性能都相同。
是否有不适用于 IPv6 的 Amazon CloudFront 功能?
尽管在为您的分发打开 IPv6 之前可能需要对内部 IPv6 地址处理程序进行两处更改,但 Amazon CloudFront 的所有现有功能将继续适用于 IPv6。
- 如果您已经打开了 Amazon CloudFront 访问日志功能,那么您一开始将在“c-ip”字段中看到您的查看者的 IPv6 地址,并且可能需要验证您的日志处理系统是否继续适用于 IPv6。
- 为 Amazon CloudFront 分发启用 IPv6 后,您将在发送到您的原始系统的“X-Forwarded-For”标头中获取 IPv6 地址。如果您的原始系统只能处理 IPv4 地址,则您可能需要验证您的原始系统是否继续适用于 IPv6 地址。
此外,如果您针对可信签署人使用了 IP 白名单,应针对 IP 白名单上的可信签署人 URL 仅使用 IPv4 分配,但可对所有其他内容使用 IPv4/IPv6 分配。该模型可避免发生以下问题:如果签名请求是通过 IPv4 地址到达并也通过该地址进行签署,则只能让内容请求通过不在白名单上的不同 IPv6 地址到达。
要了解有关 Amazon CloudFront 中 IPv6 支持的更多信息,请参阅 Amazon CloudFront 开发人员指南中的“Amazon CloudFront 上的 IPv6 支持”。
这是否意味着,如果我想一直使用 IPv6,就无法使用 IP 白名单上的可信签署人 URL?
否。如果您想同时使用 IPv6 和 IP 白名单上的可信签署人 URL,您应使用两种独立的分发方法。您应该为 IP 白名单上的可信签署人 URL 专门指定分配,并针对此分配禁用 IPv6。然后,您将针对所有其他内容使用另一种同时适用于 IPv4 和 IPv6 的分发。
如果我启用了 IPv6,IPv6 地址会显示在访问日志中吗?
会,如果您已经启用了 Amazon CloudFront 访问日志功能,您的查看者的 IPv6 地址现在将在访问日志的“c-ip”字段中显示。在为您的分配打开 IPv6 之前,您可能需要验证您的日志处理系统是否继续适用于 IPv6 地址。如果您遇到任何影响工具或软件处理访问日志中 IPv6 地址的能力的 IPv6 流量问题,请联系开发人员支持。有关更多详细信息,请参阅 Amazon CloudFront 访问日志文档。
我是否可以为我所有的新分发禁用 IPv6?
可以,对于新分发和现有分发,您可以使用 Amazon CloudFront 控制台或 API 来按分发启用/禁用 IPv6。
哪些原因会让我想要禁用 IPv6?
在与客户的讨论中,我们听到的唯一一个常见案例就是内部 IP 地址处理。为 Amazon CloudFront 分发启用 IPv6 后,您除了可以在详细的访问日志中获取 IPv6 地址外,还可以在发送到您的原始系统的“X-Forwarded-For”标头中获取 IPv6 地址。如果您的原始系统只能处理 IPv4 地址,则在为您的分发打开 IPv6 之前,您可能需要验证您的原始系统是否继续适用于 IPv6 地址。
我已经为我的分发启用了 IPv6,但 DNS 查找没有返回任何 IPv6 地址。这是怎么回事?
虽然 Amazon CloudFront 在全球拥有非常多的连接,但仍然有一些网络还没有普及 IPv6 连接。虽然从长远来看,很显然 IPv6 才是 Internet 的未来,但在可预见的未来,Internet 上的每个终端节点将仍然使用 IPv4 连接。当我们发现 Internet 某些部分的 IPv4 连接性比 IPv6 连接性好时,我们就会更愿意使用前者。
如果我使用 Route 53 来处理我的 DNS 需求,并且已经创建了指向一个 Amazon CloudFront 分发的别名记录,我是否需要更新我的别名记录,以启用 IPv6?
需要,您可以创建指向您的 Amazon CloudFront 分发的 Route 53 别名记录,以分别使用“A”和“AAAA”记录类型来支持 IPv4 和 IPv6。如果您想仅启用 IPv4,则只需要一个“A”类型的别名记录即可。有关别名资源记录集的详细信息,请参阅 Amazon Route 53 开发人员指南。
计费
全部打开Amazon CloudFront 的 AWS Free Tier 包含哪些使用类型?
从 2021 年 12 月 1 日开始,所有 AWS 客户都将获得每月 1 TB 的数据传出、1000 万次 HTTP/HTTPS 请求以及 200 万次 CloudFront 函数调用的使用配额。免费套餐不包括所有其他使用类型(例如 Invalidations、Proxy requests、Lambda@edge、Origin shield、Data Transfer to Origin 等)。
如果我们注册了整合账单,是否可以针对每个账户获得 AWS Free Tier?
不能。使用整合账单跨多个账户间统一付款的客户,每个组织只能获得一个 Free Tier。
如果我在多个区域使用,并且超出了免费套餐的限额,会出现什么情况?
1 TB 数据传输和 1000 万次请求是所有边缘位置的每月免费套餐上限。如果用量超过了每月免费套餐上限,您只需按各个区域的 AWS 按需服务标准费率付费即可。请参阅 AWS CloudFront 定价页面了解完整的定价详情。
如何了解已经使用的用量以及是否已超出免费使用套餐限额?
登录您的账户并进入账单和成本管理控制面板,您可以按区域查看当前和过去的使用活动。在此面板中,您可以通过 AWS Budgets 管理成本和使用情况、通过 Cost Explorer 成本管理服务显示成本动因和使用趋势,并通过成本和使用情况报告深入了解您的成本。 要了解有关如何控制 AWS 成本的更多信息,请查看“控制 AWS 成本”10 分钟教程。
免费套餐是否适用于订阅 CloudFront 安全防御节省套餐的客户?
订阅 CloudFront 安全防御节省套餐的客户也可以享受免费套餐。如果因为免费套餐,您觉得有必要降低对 CloudFront 安全防御节省套餐捆绑包的承诺,请联系客户服务部,我们将评估您的更改请求。未来几天,我们将提供更多的细节。敬请关注。
使用 Amazon CloudFront 如何收费?
Amazon CloudFront 根据以下五个方面的服务实际使用量进行收费:数据传出、HTTP/HTTPS 请求、失效请求、实时日志请求,以及与 CloudFront 分发相关联的专用 IP 自定义 SSL 证书。
借助 AWS 免费使用套餐,您可以开始免费使用 Amazon CloudFront,并随着使用量的增加而降低费率。所有 CloudFront 客户都可以免费接收 1 TB 的数据转出和 1000 万次针对 Amazon CloudFront 的 HTTP 和 HTTPS 请求,即使超出了这些限制。如果
- 数据传出到 Internet
对于您从 Amazon CloudFront 边缘站点传出的数据量,我们将进行收费,以 GB 为单位计量。您可以在此处查看 Amazon CloudFront 数据传输到 Internet 的费率。请注意,您的数据传输用量将按特定地理区域单独合计,然后费用将按每个区域的定价套餐进行计算。如果您使用其他 AWS 服务作为文件的原始服务器,我们将按您对这些服务的用量(包括存储和计算时间)单独向您收费。如果您使用的是 AWS 原始服务器(如 Amazon S3 和 Amazon EC2 等),并且是在 2014 年 12 月 1 日生效的,我们不会针对您将 AWS 数据传出到 Amazon CloudFront 收费。这适用于从所有 AWS 区域向全球 CloudFront 边缘站点的数据传输。 - 数据传出到原始服务器
对于您从 Amazon CloudFront 边缘站点传出到原始服务器(包括 AWS 原始服务器和其他原始服务器)的数据量,我们将进行收费,以 GB 为单位计量。您可以在此处查看 Amazon CloudFront 数据传输到原始服务器的费率。 - HTTP/HTTPS 请求
对于您向 Amazon CloudFront 发出的对您内容的 HTTP/HTTPS 请求,我们将进行收费。您可以在此处查看 HTTP/HTTPS 请求的费率。 - 失效请求
您需要为无效请求中的每个路径支付费用。无效请求中的路径代表您希望从 CloudFront 缓存中失效的对象的 URL(如果路径包含通配符,则为多个 URL)。您每月可从 Amazon CloudFront 请求让最多 1000 个路径失效,而无需支付额外费用。前 1000 个路径的数量到达后,您需要对无效请求中列出的每个路径支付费用。您可以在此处查看失效请求的费率。 - 实时日志请求
实时日志根据所生成的日志行数量收费;CloudFront 每向您的日志目标发布 1000000 个日志行,您需支付 0.01 USD。 - 专用 IP 自定义 SSL
请使用自定义 SSL 证书支持的专用 IP 版为与一个或多个 CloudFront 分配关联的每个自定义 SSL 证书每月支付 600 USD。该月度费用按小时比例收取。例如,如果您在六月将您的自定义 SSL 证书与至少一个 CloudFront 分配相关联,时长仅为 24 小时(即 1 天),那么您在六月对自定义 SSL 证书功能的使用将被收取的费用总额为:(1 天 / 30 天)* 600 USD = 20 USD。要使用专用 IP 自定义 SSL 证书支持,请上传 SSL 证书并使用 AWS 管理控制台,将其关联到您的 CloudFront 分发内容。如果您需要将两个以上的自定义 SSL 证书与 CloudFront 分发相关联,请将与使用案例有关的详细信息和您要在 CloudFront 限制提高申请表中使用的自定义 SSL 证书数量包含在内。
数据传输的使用套餐针对每个区域单独计量。除非另行说明,否则上述价格不包括适用税费、费用或类似政府收费(如果存在)。
你们的价格含税吗?
除非另行说明,否则我们的价格不包含适用的税费和关税(包括增值税和适用的销售税)。使用日本账单地址的客户若要使用 AWS,则需缴纳日本消费税。 了解详情。
实时日志的成本是多少?
如果您的分发每秒提供 1000 个请求及 1KB 的日志大小,并在美国东部(俄亥俄州)创建具有 2 个分片的 Kinesis 数据流:
Kinesis 数据流的月度成本为:47.74 USD/月,请在此处使用 Kinesis 计算器进行计算。
CloudFront 实时日志的月度成本:每秒请求数 X 实时日志的成本 = 1000 *(60 秒 * 60 分钟 *24 小时 * 30 天)X(0.01 USD /1000000)= 25.92 USD/月
304 响应是如何收费的?
304 是对条件 GET 请求的响应,将导致对 HTTP/HTTPS 请求和向 Internet 传输的数据进行收费。304 响应不包含消息正文,但是 HTTP 标头会消耗一些带宽,从而会向您收取标准 CloudFront 数据传输费。数据传输量取决于与对象相关的标头。
我是否可以选择只从价格较低的 Amazon CloudFront 区域提供内容?
是的,“价格分级”让您能够选择以较低的价格将内容传输到 Amazon CloudFront 以外的地方。默认情况下,Amazon CloudFront 会通过其全球边缘站点网络传输内容,以便尽量降低终端用户的延迟性。但是,因为在成本高的地区我们的收费也更高,这意味着在某些地区您需要支付更多费用才能以较低的延迟性传输您的内容。价格分级能让您将 Amazon CloudFront 的高价边缘站点排除在 Amazon CloudFront 服务分配范围之外,从而节省传输费用。此类情况下,Amazon CloudFront 将从属于您所选价格级别的地区内的边缘站点传输您的内容,并根据传输内容的实际地区的数据传输和请求定价进行收费。
如果您最关注性能,则无需进行任何操作;您的内容将通过我们的整个站点网络传输。但是,如果您希望使用其他价格级别,可以通过 AWS 管理控制台或 Amazon CloudFront API 配置您的分配。如果您选择了没有包括所有地区的价格级别,则某些查看者(特别是所在位置不属于您所选价格级别的查看者)遇到的延迟性可能高于从所有 Amazon CloudFront 站点传输内容的延迟性。
请注意,Amazon CloudFront 偶尔还会从没有包括在您所选价格级别中的地区的节点处理您的内容请求。发生此类情况时,我们只按照您所选价格级别中最低费率的地区向您收费。
您可以在此处查看每个价格级别包括的站点列表。
CloudFront 安全防御节省套餐
全部打开什么是 CloudFront 安全防御节省套餐?
CloudFront 安全防御节省套餐是一种灵活的自助定价计划,可帮助您最多节省 30% 的 CloudFront 费用,但您需要承诺为期一年的稳定月度使用量(例如每月 100 USD)。 作为一项额外的权益,包含用于保护 CloudFront 资源的 Amazon WAF(Web 应用程序防火墙)使用量(最高为已承诺计划金额的 10%),无需额外付费。 例如,承诺每月使用 100 USD 的 CloudFront 将涵盖价值 142.86 USD 的 CloudFront 使用量,与标准费率相比可节省 30%。此外,还包括高达 10 美元的用于保护 CloudFront 资源的 Amazon WAF 使用量,而无需每月额外付费(最高为 CloudFront 承诺的 10%)。 对于超出您每月支出承诺的任何使用量,将收取标准 CloudFront 和 Amazon WAF 费用。 随着使用量的增长,您可以购买附加的节省套餐,以获取增量使用量的折扣。
CloudFront 安全防御节省套餐涵盖哪些类型的使用?
通过购买 CloudFront 安全防御节省套餐,您可以享受到 30% 的费用节省,该节省将显示在月度账单的 CloudFront 服务部分,可抵扣所有 CloudFront 计费使用类型(包括数据传出、数据传输到源、HTTP/S 请求费、字段级加密请求、Origin Shield 费用、失效、专用 IP 自定义 SSL、任播静态 IP、Lambda@Edge、CloudFront Functions、实时日志、区域边缘缓存使用、gRPC、WebSocket 支持以及其他 CloudFront 功能)的费用。此外,您还将获得额外权益,可抵扣与您的 CloudFront 分发相关的 AWS WAF 使用费用。
如何开始使用 CloudFront 安全防御节省套餐?
您可以通过以下方法开始使用 CloudFront 安全防御节省套餐,即访问 CloudFront 控制台以获取有关承诺金额的建议(基于 CloudFront 使用量和 AWS WAF 使用量的历史记录),或输入您估算的每月使用量。您可以将 CloudFront 安全防御节省套餐每月费用与按需费用进行比较,并查看估算的节省额,以帮助确定适合您需求的正确计划。 注册 Savings Bundle 后,将向您收取每月承诺的费用,并显示抵免您的 CloudFront 和 WAF 使用费的抵扣金额。 对于超出您每月支出承诺的任何使用量,将收取标准服务费用。
如果我的 CloudFront 安全防御节省套餐在 1 年期限后到期,会发生什么情况?
当 CloudFront 安全防御节省套餐到期后,将对 CloudFront 和 Amazon WAF 收取标准服务费用。 每月 Savings Bundle 承诺将不再计费,并且 Savings Bundle 权益将不再适用。 您可以在服务包到期前的任何时间选择加入,以自动将 CloudFront 安全防御节省套餐续期一年。
CloudFront 安全防御节省套餐如何与 AWS Organizations/整合账单一起使用?
可通过 Amazon Organizations/整合账单系列中的任何账单购买 CloudFront 安全防御节省套餐。 CloudFront Security Savings Bundle 权益作为账单上的抵扣金额提供。默认情况下,节省套餐提供的权益适用于 Amazon Organizations/整合账单系列中所有帐户的使用量(已启用抵扣金额共享),并且取决于订阅账户加入或离开组织的时间。 请参阅 AWS 服务抵扣金,以详细了解如何在单个和多个账户中应用 AWS 服务抵扣金。
我可以同时激活多个 CloudFront 安全防御节省套餐吗?
是的,随着使用量的增长,您可以购买附加的 CloudFront 安全防御节省套餐,以获取增量使用量的折扣。 在计算您的 Amazon Web Services 账单时,将考虑所有活动的 CloudFront 安全防御节省套餐。
CloudFront 安全防御节省套餐将如何显示在我的账单上?
您的每月承诺费用将显示在账单上单独的 CloudFront 安全防御套餐部分下。 CloudFront 安全防御节省套餐涵盖的使用量将显示在账单的 CloudFront 和 WAF 部分下,作为抵免标准使用费的抵扣金额。
如果我的使用量超出了 CloudFront 安全防御节省套餐的每月承诺,是否会收到通知?
是的,AWS Budgets 允许您设置成本和使用量阈值,当您的实际或预测费用超过阈值时,会通过电子邮件或 Amazon SNS 主题接收通知。 您可以创建针对 CloudFront 服务进行筛选的自定义 Amazon Web Services 预算,并将预算阈值金额设置为 CloudFront 安全防御节省套餐涵盖的 CloudFront 按需使用量,一旦超过该阈值,您便会收到通知。 有关预算的更多信息,请参阅 AWS 账单与成本管理用户指南中的利用 AWS Budgets 管理成本和创建预算。
CloudFront 安全防御节省套餐涵盖 WAF 账单的哪个部分?
作为 CloudFront 安全防御节省套餐的一项额外权益,包含用于保护 CloudFront 资源的 AWS WAF 使用量(最高为已承诺计划金额的 10%),无需额外付费。对于超出 CloudFront 安全防御节省套餐所涵盖的使用量的部分,将收取标准 CloudFront 和 Amazon WAF 费用。 通过 AWS Marketplace 订阅的托管 WAF 规则未涵盖在 CloudFront 安全防御节省套餐内。
如果我已拥有 CloudFront 的自定义定价协议,我是否也可以订阅 CloudFront 安全防御节省套餐?
您只能订阅一个或订阅其他套餐。 如果您对自定义定价协议有任何疑问,请联系您的 AWS 客户经理。
我可以通过 API 订阅 CloudFront 安全防御节省套餐吗?
您只能通过 CloudFront 控制台订阅 CloudFront 安全防御节省套餐。 我们将评估通过 API 提供该功能的可行性,并将其作为未来的增强功能。