Amazon CloudFront
开发人员指南 (API 版本 2016-09-29)

您创建或更新分配时指定的值

当您创建新的分配或更新现有的分配时,请指定以下值。有关使用 CloudFront 控制台创建或更新分配的信息,请参阅创建分配更新分配

传送方式

指定传输方法:Web 或 RTMP。有关更多信息,请参阅 传送方式

源设置

下列值仅适用于 Amazon S3 来源:

下列值仅适用于自定义来源,如配置为网站终端节点的 Amazon EC2、Elastic Load Balancing、Amazon S3 存储桶或您自己的 Web 服务器:

以下值适用于所有类型的来源:

缓存行为设置

分配的详细信息

自定义错误页面和错误缓存

限制

传送方式

当您创建分配时可指定传送方式。除非您将 Adobe Flash Media Server 与 RTMP 结合使用,否则该值始终为 Web。您不能更改现有分配的传送方式。

源设置

在创建或更新分配时,您可以提供一个或多个位置(称为源)的相关信息,将在其中存储 Web 内容的原始版本。CloudFront 从源中获取 Web 内容,并通过世界各地的边缘服务器网络将其提供给查看器。——每个源要么是 Amazon S3 存储桶,要么是 HTTP 服务器,例如,Web 服务器。

有关您可以为分配创建的源的当前数量限制或要请求提高限制,请参阅有关 Web 分配的一般限制

如果您想删除源,您首先必须编辑或删除与该源有关的缓存行为。

重要

如果您删除源,请确认该源先前提供的文件在另一源中可用,且您的缓存行为将这些文件的请求路由到新的源。

当您创建或更新分配时,您可为每个源指定以下值。

源域名

您希望 CloudFront 从中获取该源的对象的 Amazon S3 存储桶或 HTTP 服务器的 DNS 域名,例如:

  • Amazon S3 存储桶myawsbucket.s3.us-west-2.amazonaws.com

  • 配置为网站的 Amazon S3 存储桶https://bucket-name.s3-website.us-west-2.amazonaws.com

  • MediaStore 容器mymediastore.data.mediastore.us-west-1.amazonaws.com

  • MediaPackage 终端节点mymediapackage.mediapackage.us-west-1.amazon.com

  • Amazon EC2 实例ec2-203-0-113-25.compute-1.amazonaws.com

  • Elastic Load Balancing 负载均衡器my-load-balancer-1234567890.us-west-2.elb.amazonaws.com

  • 您自己的 Web 服务器https://example.com

源域名字段中选择域名或键入域名。域名不区分大小写。

如果您的源是 Amazon S3 存储桶,请注意以下几点:

  • 如果存储桶被配置为网站,请输入存储桶的 Amazon S3 静态网站托管终端节点;不要从源域名字段的列表中选择存储桶名称。静态网站托管终端节点显示在 Amazon S3 控制台中属性页面上静态网站托管下。有关更多信息,请参阅使用配置为源的网站终端节点的 Amazon S3 存储桶

  • 如果已为存储桶配置 Amazon S3 Transfer Acceleration,请不要为源域名指定 s3-accelerate 终端节点。

  • 如果您要从不同的 AWS 账户使用存储桶,而且该存储桶没有配置为网站,请按以下格式输入名称:

    bucket-name.s3.regionamazonaws.com

    如果存储桶位于美国标准区域,并且您希望 Amazon S3 将请求路由到位于弗吉尼亚北部的设施,请使用以下格式:

    bucket-name.s3.us-east-1.amazonaws.com

  • 这些文件必须公开可读,除非您使用 CloudFront 源访问身份在 Amazon S3 中保护您的内容。有关更多信息,请参阅使用源访问身份限制对 Amazon S3 内容的访问

重要

如果源是 Amazon S3 存储桶,存储桶名称必须符合 DNS 命名要求。有关更多信息,请转至 Amazon Simple Storage Service 开发人员指南 中的存储桶限制

在更改源的源域名值时,CloudFront 立即开始将更改复制到 CloudFront 边缘站点。在给定边缘站点中更新分配配置之前,CloudFront 继续将请求转发到以前的 HTTP 服务器或 Amazon S3 存储桶。在该边缘站点中更新分配配置后,CloudFront 立即开始将请求转发到新的 HTTP 服务器或 Amazon S3 存储桶。

更改源并不要求 CloudFront 用新源中的对象重新填充边缘缓存。只要应用程序中的查看器请求未经更改,CloudFront 将继续提供边缘缓存中已有的对象,直至每个对象的 TTL 过期或直至很少被请求的对象被移出。

源路径

如果您希望 CloudFront 从 AWS 资源或自定义源的目录中请求内容,请输入目录路径并以斜杠 (/) 开头。CloudFront 将目录路径附加到源域名值中,例如 cf-origin.example.com/production/images。请不要在路径的末尾添加斜杠 (/)。

例如,假设已为分配指定以下值:

  • 源域名 – 名为 myawsbucket 的 Amazon S3 存储桶

  • 源路径/production

  • 备用域名 (CNAME)example.com

当用户在浏览器中输入 example.com/index.html 时,CloudFront 向 Amazon S3 发送请求以获取 myawsbucket/production/index.html

当用户在浏览器中输入 example.com/acme/index.html 时,CloudFront 向 Amazon S3 发送请求以获取 myawsbucket/production/acme/index.html

源 ID

唯一区分此分配中的该源或源组的字符串。如果您创建默认缓存行为之外的缓存行为,可以使用在此指定的 ID 标识您希望 CloudFront 在请求与该缓存行为的路径模式匹配时将请求路由到的源或源组。

有关更多信息,请参阅下列内容:

限制存储桶访问

注意

仅适用于 Amazon S3 存储桶来源(配置为网站终端节点的情况除外)。

如果您希望用户仅使用 CloudFront URL 而非 Amazon S3 URL 访问 Amazon S3 存储桶中的对象,请选择。然后,指定其他值。

如果您希望用户能够通过使用 CloudFront URL 或 Amazon S3 URL 访问对象,请选择 No (否)

有关更多信息,请参阅 使用源访问身份限制对 Amazon S3 内容的访问

有关如何要求用户仅使用 CloudFront URL 访问自定义源上的对象的信息,请参阅 在自定义源上限制对文件的访问

源访问身份

注意

仅适用于 Amazon S3 存储桶来源(配置为网站终端节点的情况除外)。

对于限制存储桶访问,如果您选择,则选择是否新建源访问身份或使用与您的 AWS 账户有关的现有身份。如果您已经具有源访问身份,我们建议您重新使用它来简化维护。有关源访问身份的更多信息,请参阅 使用源访问身份限制对 Amazon S3 内容的访问

注释新标识

注意

仅适用于 Amazon S3 存储桶来源(配置为网站终端节点的情况除外)。

如果为源访问身份选择创建新的身份,请输入指定新源访问身份的注释。在创建该分配时,CloudFront 将创建源访问身份。

您的标识

注意

仅适用于 Amazon S3 存储桶来源(配置为网站终端节点的情况除外)。

如果为源访问身份选择使用现有的身份,则选择您想要使用的源访问身份。您不能使用与另一个 AWS 账户关联的源访问身份。

授予对存储桶的读取权限

注意

仅适用于 Amazon S3 存储桶来源(配置为网站终端节点的情况除外)。

如果您希望 CloudFront 自动为源访问身份授予读取 Amazon S3 存储桶中对象的权限,请选择是,更新存储桶策略

重要

如果选择是,更新存储桶策略,CloudFront 将更新存储桶策略,以便为指定的源访问身份授予读取存储桶中的对象的权限。但是,CloudFront 并不删除存储桶策略中现有的权限或个别对象的权限。如果用户当前具有使用 Amazon S3 URL 访问存储桶中的对象的权限,在 CloudFront 更新存储桶策略后,他们仍具有该权限。要查看或更改现有存储桶策略以及对存储桶中对象的现有权限,使用 Amazon S3 提供的方法。有关更多信息,请参阅授予源访问身份读取 Amazon S3 存储桶中文件的权限

如果您想要手动更新权限,例如,更新对象的 ACL 而不是更新存储桶权限,请选择 否,我将更新权限

最低限度源 SSL 协议

选择 CloudFront 在建立与您的源的 HTTPS 连接时可以使用的最低限度 TLS/SSL 协议。降低 TLS 协议级别会降低安全性,因此我们建议您选择您的源支持的最新 TLS 协议。

如果您使用 CloudFront API 来设置 TLS/SSL 协议以供 CloudFront 使用,您不能设置最低协议。而是要指定 CloudFront 可以用于您的源的所有 TLS/SSL 协议。有关更多信息,请参阅 Amazon CloudFront API Reference 中的 OriginSslProtocols

注意

此选项不适用于 Amazon S3 存储桶,除非存储桶配置为网站终端节点。如果源是 Amazon S3 存储桶而未配置为网站终端节点,则 CloudFront 始终使用 TLSv1.2。

源协议策略

注意

此选项不适用于 Amazon S3 存储桶,除非存储桶配置为网站终端节点。

您希望 CloudFront 从您的源服务器获取对象时使用的协议政策。

选择以下任一值:

  • 仅 HTTP:CloudFront 仅使用 HTTP 访问源。

    重要

    如果您的来源是配置为网站终端节点的 Amazon S3 存储桶,则必须选择此选项。Amazon S3 不支持网站终端节点的 HTTPS 连接。

  • 仅 HTTPS:CloudFront 仅使用 HTTPS 访问源。

  • 匹配查看器:CloudFront 使用 HTTP 或 HTTPS 与源进行通信,具体取决于查看器请求协议。CloudFront 仅缓存对象一次,即使查看器同时使用 HTTP 和 HTTPS 协议发出请求。

    重要

    对于 CloudFront 转发到该源的 HTTPS 查看器请求,源服务器上的 SSL 证书中的域名之一必须与为源域名指定的域名匹配。否则,CloudFront 将使用 HTTP 状态代码 502(无效网关)响应查看器请求,而不是返回请求的对象。有关更多信息,请参阅在 CloudFront 中使用 SSL/TLS 证书的要求

源响应超时

注意

此选项不适用于 Amazon S3 存储桶,除非存储桶配置为网站终端节点。

来源响应超时(也称为来源读取超时来源请求超时)适用于以下两个值:

  • CloudFront 在将请求转发到自定义来源后等待响应的时间长度(以秒为单位)

  • CloudFront 从收到来自来源的一个响应数据包到收到下一个数据包之间等待的时间长度(以秒为单位)

默认超时时间为 30 秒。您可以将此值更改为 4 到 60 秒内的值。如果您需要上述范围之外的超时值,可请求对限制进行更改

提示

如果您由于查看器遇到了 HTTP 504 状态代码错误而希望增加超时值,请考虑探索其他方法来在更改超时值之前消除这些错误。请参阅 HTTP 504 状态代码 (Gateway Timeout) 中的故障排除建议。

CloudFront 行为取决于查看器请求中的 HTTP 方法:

  • GETHEAD 请求 – 如果源在读取超时时间结束之前未响应或源停止响应的时间达到配置的超时时间,CloudFront 将中断连接并另外尝试联系源两次。在第三次尝试后,如果源在读取超时时间结束之前未响应,则 CloudFront 不会重试,直至它收到对同一个源上的内容的其他请求。

  • DELETEOPTIONSPATCHPUTPOST 请求 – 如果源在读取超时时间结束之前未响应,CloudFront 将中断连接并且不会再次尝试联系源。如有必要,客户端可以重新提交请求。

来源保持连接超时

注意

此选项不适用于 Amazon S3 存储桶,除非存储桶配置为网站终端节点。

CloudFront 在获取最后一个响应数据包后尝试保持与自定义来源的连接的时间长度(以秒为单位)。保持持久性连接可节省重新建立 TCP 连接和执行后续请求的另一个 TLS 握手所需的时间。增加保持连接超时有助于改善分配的每连接请求指标。

注意

为了让 Origin Keep-alive Timeout 值生效,源必须配置为允许持久性连接。

默认超时时间为 5 秒。您可以将此值更改为 1 到 60 秒内的值。如果您需要长于 60 秒的保持连接超时时间,可请求更改限制

HTTP 端口

注意

此选项不适用于 Amazon S3 存储桶,除非存储桶配置为网站终端节点。

可选。自定义源侦听的 HTTP 端口。有效值包括端口 80、443 和 1024 至 65535。默认值为端口 80。

HTTPS 端口

注意

此选项不适用于 Amazon S3 存储桶,除非存储桶配置为网站终端节点。

可选。自定义源侦听的 HTTPS 端口。有效值包括端口 80、443 和 1024 至 65535。默认值为端口 443。

源自定义标头

如果您希望 CloudFront 在将请求转发到源时包含自定义标头,请指定以下值:

标头名称

您希望 CloudFront 转发到源的标头的名称。

您在自定义标头字段中指定的标头的值。

有关更多信息,请参阅将自定义标头转发到源

有关可转发到源的自定义标头的最大数目、自定义标头名称和值的最大长度以及所有标头名称和值的总长度的当前限制,请参阅限制

缓存行为设置

缓存行为让您为您网站上文件的特定 URL 路径模式配置各种 CloudFront 功能。例如,一个缓存行为可能适用于用作 CloudFront 源服务器的 Web 服务器上的 images 目录中的所有 .jpg 文件。您可为每个缓存行为配置的功能包括:

  • 路径模式。

  • 如果为 CloudFront 分配配置了多个源,您希望 CloudFront 将您的请求转发到哪个源。

  • 是否将查询字符串转发到源。

  • 是否访问指定文件需要签名 URL。

  • 是否要求用户使用 HTTPS 访问那些文件。

  • 那些文件保留在 CloudFront 缓存中的最小时间长度,不管源添加到文件中的任何 Cache-Control 标头的值。

当您创建新分配时,您为默认缓存行为指定设置,这将自动把所有请求转发到您创建分配时指定的源中。在创建分配后,您可以创建其他缓存行为,这些行为定义 CloudFront 在收到与路径模式相匹配的对象的请求时如何响应,例如,*.jpg。如果您创建其他缓存行为,默认缓存行为始终是最后一个被处理的。其他缓存行为按它们在 CloudFront 控制台中列出的顺序进行处理,或者,如果您使用 CloudFront API,则按它们在分配 DistributionConfig 元素中列出的顺序进行处理。有关更多信息,请参阅路径模式

当您创建缓存行为是,您可指定您希望 CloudFront 从中获取对象的一个源。因此,如果您希望 CloudFront 分配所有源的对象,您必须至少具有与您所拥有的源一样多的缓存行为(包括默认缓存行为)。例如,如果您具有两个源但只有一个默认缓存行为,默认缓存行为将导致 CloudFront 从两个源之一中获取对象,但永远不会使用另一个源。

有关您可以向分配添加的缓存行为的当前数量限制或要请求提高限制,请参阅有关 Web 分配的一般限制

路径模式

路径模式(例如,images/*.jpg)指定您希望该缓存行为所适用的请求。CloudFront 接收到最终用户请求时,会按照缓存行为在分配中所列的顺序,将请求路径与路径模式进行比较。第一个匹配者决定了哪个缓存行为适用于该请求。例如,假设您具有以下三个路径模式的三个缓存行为,顺序如下:

  • images/*.jpg

  • images/*

  • *.gif

注意

您可以选择在路径模式的开头包含斜杠 (/),例如 /images/*.jpg。无论开头是否具有 /,CloudFront 的行为都相同。

文件 images/sample.gif 的请求不符合第一个路径模式,因此,相关的缓存行为不适用于该请求。文件符合第二路径模式,因此,与第二个路径模式有关的缓存行为适用,即使该请求与第三个路径模式也匹配。

注意

在创建新的分配时,默认缓存行为的路径模式的值将设置为 *(所有文件)且无法更改。该值导致 CloudFront 将对象的所有请求转发到在 源域名 字段中指定的源。如果对象的请求与任何其他缓存行为的路径模式都不匹配,CloudFront 将应用您在默认缓存行为中指定的行为。

重要

请谨慎定义路径模式及其顺序,否则您可能会向用户提供非预期的内容访问权限。例如,假设请求匹配两个缓存行为的路径模式。第一个缓存行为不要求签名 URL,而第二个缓存行为要求签名 URL。用户将不需使用签名 URL 就可访问对象,因为 CloudFront 处理与第一个匹配有关的缓存行为。

如果您正在使用 MediaPackage 通道,则必须为您为源的终端节点类型定义的缓存行为包含特定的路径模式。例如,对于 DASH 终端节点,则为 Path Pattern (路径模式) 键入 *.mpd。有关更多信息和具体说明,请参阅提供使用 AWS Elemental MediaPackage 格式化的实时视频

您指定的路径适用于指定的目录及其所有子目录中的所有文件的请求。在评估路径模式时,CloudFront 不会考虑查询字符串或 Cookie。例如,如果images目录包含 product1product2 子目录,此路径模式images/*.jpg适用于 imagesimages/product1images/product2 目录中任何 .jpg 文件的请求。如果您希望将不同的缓存行为应用于 images/product1 目录中的文件而非 imagesimages/product2 目录中文件,为 images/product1 创建单独的缓存行为,并将该缓存行为移到 images 目录中缓存行为上方 (前面) 的位置。

您可在路径模式中使用以下通配符:

  • *匹配 0 或多个字符。

  • ?精准匹配 1 个字符。

以下示例展示了通配符如何工作:

路径模式 与路径模式匹配的文件

*.jpg

所有 .jpg 文件

images/*.jpg

images目录及该images目录下子目录中所有的 .jpg 文件

a*.jpg

  • 文件名以 a 开头的所有 .jpg 文件,例如,apple.jpgappalachian_trail_2012_05_21.jpg

  • 文件路径以 a 开头的所有 .jpg 文件,例如,abra/cadabra/magic.jpg

a??.jpg

文件名以 a 开头且随后紧跟两个其他字符的所有 .jpg 文件,例如,ant.jpgabe.jpg

*.doc*

文件展开面以 .doc 开头的所有文件,例如,.doc.docx.docm 文件。在这种情况下,您不能使用路径模式*.doc?,因为该路径模式不适用于.doc文件的请求;?通配符精确替换一个字符。

路径模式的长度上限是 255 个字符。该值可包含以下任何字符:

  • A-Z, a-z

    路径模式区分大小写,因此,路径模式 *.jpg 不适用于文件 LOGO.JPG

  • 0-9

  • _ - . * $ / ~ " ' @ : +

  • &,作为 & 传递和返回

源(仅现有分配)

输入现有源的源 ID 值。该值标识当请求(如 http://example.com/logo.jpg)与缓存行为(如 *.jpg)或默认缓存行为 (*) 的路径模式匹配时,您希望 CloudFront 将请求路由至的源。

查看器协议策略

选择您希望查看器用来访问 CloudFront 边缘站点中的内容的协议策略:

  • HTTP 和 HTTPS:查看器可使用两种协议。

  • Redirect HTTP to HTTPS (将 HTTP 重定向到 HTTPS):查看器可使用两种协议,但 HTTP 请求将自动重定向到 HTTP 请求。

  • 仅 HTTPS:如果查看器使用了 HTTPS,则只能访问您的内容。

有关更多信息,请参阅 要求在查看器和 CloudFront 之间使用 HTTPS 进行通信

字段级加密

如果您要对特定数据字段强制实施字段级加密,则在下拉列表中选择一个字段级加密配置。

有关更多信息,请参阅 使用字段级加密帮助保护敏感数据

允许的 HTTP 方法

指定您希望 CloudFront 处理并转发到源的 HTTP 方法:

  • GET、HEAD:您只能使用 CloudFront 从源中获取对象或获取对象标头。

  • GET、HEAD、OPTIONS:您只能使用 CloudFront 从源中获取对象,获取对象标头或检索源服务器支持的选项列表。

  • GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE:您可以使用 CloudFront 获取、添加、更新和删除对象以及获取对象标头。此外,您可以执行其他 POST 操作,例如从 Web 表格提交数据。

    注意

    CloudFront 缓存 GETHEAD 请求以及 OPTIONS 请求(可选)的响应。CloudFront 不缓存使用其他方法的请求的响应。

如果将 Amazon S3 存储桶作为分配的源并使用 CloudFront 源访问身份,则在某些 Amazon S3 区域中不支持 POST 请求,并且这些区域中的 PUT 请求需要使用额外的标头。有关更多信息,请参阅 在仅支持签名版本 4 身份验证的 Amazon S3 区域中使用源访问身份

重要

如果选择 GET、HEAD、OPTIONSGET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE,您可能需要限制对 Amazon S3 存储桶或自定义源的访问,以禁止用户执行您不希望他们执行的操作。以下示例说明了如何限制访问:

  • 如果将 Amazon S3 作为您的分配的源:创建 CloudFront 源访问身份以限制对您的 Amazon S3 内容的访问,并为源访问身份授予权限。例如,您将 CloudFront 配置为接受并转发这些方法只是 因为要使用 PUT,您仍需配置 Amazon S3 存储桶策略或 ACL 以相应地处理 DELETE 请求。有关更多信息,请参阅使用源访问身份限制对 Amazon S3 内容的访问

  • 如果您使用自定义源:配置源服务器以处理所有方法。例如,您将 CloudFront 配置为接受并转发这些方法 只是 因为要使用 POST,您仍需配置源服务器以相应地处理 DELETE 请求。

缓存的 HTTP 方法

指定您是否希望 CloudFront 在查看器提交 OPTIONS 请求时缓存来自源的响应。CloudFront 始终缓存 GETHEAD 请求的响应。

基于选择的请求标头进行缓存

指定您是否要 CloudFront 基于指定标头的值缓存对象:

  • 无(改进缓存) – CloudFront 不根据标头值缓存您的对象。

  • 白名单 – CloudFront 仅根据指定标头的值缓存您的对象。使用白名单标头选择您希望 CloudFront 进行缓存所基于的标头。

  • 所有 – CloudFront 不缓存与该缓存行为关联的对象。相反,CloudFront 将每个请求发送到源。(不建议对 Amazon S3 源使用。)

无论您选择哪个选项,CloudFront 都会将特定标头转发到源并根据您转发的标头执行特定操作。有关 CloudFront 如何处理标头转发的更多信息,请参阅HTTP 请求标头和 CloudFront 行为 (自定义源和 S3 源)

有关如何使用请求标头在 CloudFront 中配置缓存的更多信息,请参阅根据请求标头缓存内容

白名单标头

指定您希望 CloudFront 在缓存对象时考虑的标头。从可用标头列表中选择标头,然后选择添加。要转发自定义标头,请在字段中输入标头的名称,然后选择 Add Custom

有关您可以为每个缓存行为列入白名单的标头的当前数量限制或要请求提高限制,请参阅有关自定义标头的限制 (仅限 Web 分配)

对象缓存

如果源服务器将 Cache-Control 标头添加到对象以控制在 CloudFront 缓存中保留对象的时间长度,并且您不希望更改 Cache-Control 值,请选择使用源缓存标头

要指定在 CloudFront 缓存中保留对象的最短时间和最长时间(不管 Cache-Control 标头如何)以及在缺少 Cache-Control 标头时在 CloudFront 缓存中保留对象的默认时间,请选择自定义。然后,在最小 TTL默认 TTL最大 TTL 字段中指定值。

有关更多信息,请参阅管理内容保留在边缘缓存中的时间长度(过期)

最小 TTL

指定您希望在 CloudFront 缓存中保留对象的最短时间(以秒为单位),此时间之后,CloudFront 将另一个请求转发到源以确定是否已更新该对象。最小 TTL 的默认值是 0 秒。

重要

如果将 CloudFront 配置为针对缓存行为将所有标头转发到源,则 CloudFront 绝不会缓存关联的对象。相反,CloudFront 将这些对象的所有请求转发到源。在该配置中,最小 TTL 的值必须为 0。

要指定 Minimum TTL 的值,您必须为 Object Caching 设置选择 Customize 选项。

有关更多信息,请参阅管理内容保留在边缘缓存中的时间长度(过期)

最大 TTL

指定您希望在 CloudFront 查询源以了解是否已更新对象之前,在 CloudFront 缓存中保留对象的最大时间长度(以秒为单位)。您为最大 TTL 指定的值仅在源向对象添加 HTTP 标头 (例如 Cache-Control max-ageCache-Control s-maxageExpires) 时适用。有关更多信息,请参阅管理内容保留在边缘缓存中的时间长度(过期)

要指定 Maximum TTL 的值,您必须为 Object Caching 设置选择 Customize 选项。

Maximum TTL 的默认值为 31536000 秒 (一年)。如果您将 Minimum TTLDefault TTL 的值更改为一个大于 31536000 秒的值,则 Maximum TTL 的默认值将变为 Default TTL 的值。

默认 TTL

指定您希望在 CloudFront 缓存中保留对象的默认时间(以秒为单位),此时间之后,CloudFront 将另一个请求转发到源以确定是否已更新该对象。您为 Default TTL 指定的值仅在源 向对象添加 HTTP 标头 (例如 Cache-Control max-ageCache-Control s-maxageExpires) 时适用。有关更多信息,请参阅管理内容保留在边缘缓存中的时间长度(过期)

要指定 Default TTL 的值,您必须为 Object Caching 设置选择 Customize 选项。

Default TTL 的默认值为 86400 秒 (一天)。如果您将 Minimum TTL (最短 TTL) 的值更改为一个大于 86400 秒的值,则 Default TTL (默认 TTL) 的默认值将更改为 Minimum TTL (最短 TTL) 的值。

转发 Cookie

注意

此选项不适用于 Amazon S3 存储桶,除非存储桶配置为网站终端节点。

指定是否希望 CloudFront 转发 Cookie 到您的源服务器,以及指定转发哪些 Cookie。如果您选择仅转发选定的 Cookie(Cookie 白名单),则在白名单 Cookie 字段中输入 Cookie 的名称。如果您选择所有,不管您的应用程序使用多少 Cookie,CloudFront 都会转发所有 Cookie。

Amazon S3 不处理 Cookie,且将 Cookie 转发到源会降低缓存能力。对于将请求转发到 Amazon S3 源的缓存行为,请为转发 Cookie 选择

有关将 Cookie 转发到来源的更多信息,请转至根据 Cookie 缓存内容

白名单 Cookie

注意

此选项不适用于 Amazon S3 存储桶,除非存储桶配置为网站终端节点。

如果您在转发 Cookie 列表中选择白名单,则在白名单 Cookie 字段中输入您希望 CloudFront 为该缓存行为转发到源服务器的 Cookie 名称。在新一行中输入每个 Cookie 的名称。

可以使用以下通配符来指定 Cookie 名称:

  • * 匹配 Cookie 名称中的 0 个或多个字符

  • ? 与 Cookie 名称中的 1 个字符完全匹配

例如,假设对象的查看器请求包含一个带以下名称的 Cookie:

userid_member-number

其中,您的每个用户均具有一个唯一的 member-number 值。您希望 CloudFront 为每个成员缓存对象的单独版本。您可以通过将所有 Cookie 转发到源来完成该操作,但查看器请求包含一些您希望 CloudFront 不要缓存的 Cookie。或者,您也可以指定以下值以作为 Cookie 名称,这会导致 CloudFront 将所有以 userid_ 开头的 Cookie 转发到源:

userid_*

有关您可以为每个缓存行为列入白名单的 Cookie 名称的当前数量限制或要请求提高限制,请参阅有关白名单 Cookie 的限制 (仅限 Web 分配)

查询字符串转发和缓存

CloudFront 可根据查询字符串参数的值来缓存不同版本的内容。请选择以下任一选项:

None (Improves Caching)

如果无论查询字符串参数的值如何,源都返回相同版本的对象,请选择该选项。这增加了 CloudFront 可从缓存处理请求的可能性,这提高了性能并降低了源的负载。

Forward all, cache based on whitelist

如果源服务器根据一个或多个查询字符串参数返回不同版本的对象,请选择该选项。然后,在 查询字符串白名单 字段中指定您希望 CloudFront 作为缓存基础的参数。

Forward all, cache based on all

如果源服务器为所有查询字符串参数返回不同版本的对象,请选择该选项。

有关根据查询字符串参数进行缓存的更多信息 (包括如何改进性能),请参阅根据查询字符串参数缓存内容

查询字符串白名单

如果您为查询字符串转发和缓存选择全部转发,基于白名单缓存,请指定您希望 CloudFront 作为缓存基础的查询字符串参数。

平滑流

如果您希望以 Microsoft 平滑流格式分发媒体文件并且您没有 IIS 服务器,则选择

如果您有 Microsoft IIS 服务器并且要将其用作以 Microsoft 平滑流格式分发媒体文件的源,或者您不打算分发平滑流媒体文件,则选择 No (否)

注意

如果您指定 Yes (是),您仍可以使用该缓存行为分配其他内容,只要该内容与 Path Pattern (路径模式) 值匹配。

有关更多信息,请参阅配置按需 Microsoft 平滑流

限制查看器访问(使用签名 URL)

如果您希望与该缓存行为的 PathPattern 匹配的对象请求使用公共 URL,请选择 No

如果您希望与该缓存行为的 PathPattern 匹配的对象请求使用签名 URL,请选择 Yes。然后指定您希望用于创建签名 URL 的 AWS 账户;这些账户被称为可信签署人。

有关可信签署人的更多信息,请参阅 指定可创建签名 URL 和签名 Cookie 的 AWS 账户 (可信签署人)

可信签署人

选择您希望用作该缓存行为的可信签署人的 AWS 账号:

  • 本身:将您当前登录到 AWS 管理控制台的账户作为可信签署人。如果您目前作为 IAM 用户登录,添加相关的 AWS 账户作为可信签署人。

  • 指定账户:在“AWS Account Numbers”字段输入可信签署人的账号。

要创建可信签署人 URL,AWS 账户必须至少具有一个有效的 CloudFront 密钥对。

重要

如果您更新您已经用于分发内容的分配,则在准备开始产生对象的签名 URL 时只添加可信签署人。在您把可信签署人添加到分配为后,用户必须使用签名 URL 访问与该缓存行为 PathPattern 匹配的对象。

AWS 账号

除当前账户之外或替代当前账户,如果要使用 AWS 账户创建签名 URL,请在该字段每一行输入一个 AWS 账户。请注意以下几点:

  • 您指定的账户必须至少具有一个有效的 CloudFront 密钥对。有关更多信息,请参阅 为可信签署人创建 CloudFront 密钥对

  • 您不能为 IAM 用户创建 CloudFront 密钥对,因此,您不能使用 IAM 用户作为可信签署人。

  • 有关如何获取账户的 AWS 账号的信息,请参阅 Amazon Web Services 一般参考 中的如何获取安全凭证?

  • 如果您输入当前账户的账号,CloudFront 自动选中本身复选框,并从 AWS 账号列表中删除账号。

自动压缩对象

如果您希望 CloudFront 在查看器请求的请求标头中包含 Accept-Encoding: gzip 时自动压缩某些类型的文件,请选择。当 CloudFront 压缩内容时,由于文件更小,因此下载速度更快,并会更快地为用户呈现网页。有关更多信息,请参阅提供压缩文件

事件类型

您可以选择在发生下面的一个或多个 CloudFront 事件时运行 Lambda 函数:

  • 在 CloudFront 收到查看器的请求时 (查看器请求)

  • 在 CloudFront 将请求转发到源之前 (源请求)

  • 在 CloudFront 收到来自源的响应时 (源响应)

  • 在 CloudFront 将响应返回到查看器之前 (查看器响应)

有关更多信息,请参阅 如何确定用于触发 Lambda 函数的 CloudFront 事件

Lambda 函数 ARN

指定要为其添加触发器的 Lambda 函数的 Amazon 资源名称 (ARN)。要了解如何获取函数的 ARN,请参阅使用 CloudFront 控制台添加触发器过程的步骤 1。

分配的详细信息

以下值适用于整个分配。

价格级别

选择与您想要为 CloudFront 服务支付的最高价对应的价格级别。默认情况下,CloudFront 从所有 CloudFront 区域的节点提供您的对象。

有关价格级别以及您选择的价格级别如何影响分配的 CloudFront 性能的更多信息,请参阅选择 CloudFront 分配的价格级别。有关 CloudFront 定价的信息(包括价格级别与 CloudFront 区域之间的对应关系),请转到 Amazon CloudFront 定价

AWS WAF Web ACL

如果要使用 AWS WAF 根据您指定的条件来允许或阻止请求,请选择要与该分配关联的 Web ACL。

AWS WAF 是一种 Web 应用程序防火墙,可让您监视转发到 CloudFront 的 HTTP 和 HTTPS 请求,并控制对您的内容的访问。根据指定的条件 (如请求源自的 IP 地址或查询字符串的值),CloudFront 会使用所请求的内容或使用 HTTP 状态代码 403 (Forbidden) 来响应请求。还可以将 CloudFront 配置为在请求被阻止时返回自定义错误页面。有关 AWS WAF 的更多信息,请参阅 AWS WAF 开发人员指南

备用域名 (CNAME)

可选。指定要用于对象 URL 的一个或多个域名,而不是您在创建分配时 CloudFront 所指定的域名。您必须拥有该域名,或有权使用它,您可以通过添加 SSL/TLS 证书来验证这一点。

例如,如果您希望对象的 URL:

/images/image.jpg

像这样:

http://www.example.com/images/image.jpg

而不是这样:

http://d111111abcdef8.cloudfront.net/images/image.jpg

则为 www.example.com 添加一个 CNAME。

重要

如果将 www.example.com 的 CNAME 添加到您的分配中,还必须执行以下操作:

  • 创建(或更新)一条 CNAME 记录,让您的 DNS 服务将对 www.example.com 的查询路由到 d111111abcdef8.cloudfront.net

  • 将来自可信证书颁发机构 (CA) 的一个证书添加到 CloudFront,该证书中涵盖您添加到分配中的域名 (CNAME),以来验证您是否被授权使用该域名。

您必须具有权限才能创建 CNAME 记录,并指定域的 DNS 服务提供商。通常,这意味着您拥有该域,或者您正在为域所有者开发应用程序。

有关您可以添加到分配中的备用域名的当前数量限制,或者要请求放宽限制,请参阅有关 Web 分配的一般限制

有关备用域名的更多信息,请参阅 通过添加备用域名 (CNAME) 将自定义 URL 用于文件。有关 CloudFront URL 的更多信息,请参阅在 CloudFront 中自定义文件的 URL 格式

SSL 证书

如果指定一个备用域名来与您的分配结合使用,请选择自定义 SSL 证书,然后,要想验证您是否获得授权使用该备用域名,请选择一个涵盖它的证书。如果您希望查看器使用 HTTPS 访问您的对象,请选择支持此操作的设置。

注意

在您可以指定自定义 SSL 证书之前,您必须指定一个有效的备用域名。 有关更多信息,请参阅 使用备用域名的要求使用备用域名和 HTTPS

  • 默认 CloudFront 证书 (*.cloudfront.net) – 如果要在您的对象的 URL 中使用 CloudFront 域名,如 https://d111111abcdef8.cloudfront.net/image1.jpg,请选择该选项。

  • 自定义 SSL 证书 – 如果要将对象的 URL 中的您自己的域名作为备用域名,例如 https://example.com/image1.jpg,则选择该选项。然后,选择一个涵盖该备用域名的证书。证书列表中可以包括以下任一证书:

    • AWS Certificate Manager 提供的证书

    • 您从第三方证书颁发机构购买并上传到 ACM 的证书

    • 您从第三方证书颁发机构购买并上传到 IAM 证书存储的证书

    如果选择此设置,则我们建议您只在对象 URL 中使用一个备用域名 (https://example.com/logo.jpg)。如果您使用 CloudFront 分配域名 (https://d111111abcdef8.cloudfront.net/logo.jpg),而客户端使用较旧的不支持 SNI 得查看器,则查看器得响应取决于您为支持的客户端选择的值:

    • 所有客户端:当CloudFront域名与 SSL/TLS 证书中的域名不匹配时,查看器将显示警告。

    • 仅支持服务器名称指示 (SNI) 的客户端:CloudFront 中断与查看器的连接且不返回对象。

支持的客户

如果您指定了一个或多个备用域名,并且指定了 IAM 证书存储中的 SSL 证书,请选择您希望 CloudFront 如何处理 HTTPS 请求 - 采用适合所有客户端的方法还是适合大多数客户的方法:

  • 所有客户端:任何客户端均可访问您的内容。但是,您必须请求使用此功能的权限,并且每月会产生额外的费用。

  • 支持服务器名称指示 (SNI) 的客户端:所有现代浏览器都能访问您的内容,因为它们都支持 SNI。但是,有一些仍在使用的浏览器不支持 SNI。具有这些浏览器的用户必须使用其他一些方法才能访问您的内容,例如,直接从源获取您的对象。

有关更多信息,请参阅 使用备用域名和 HTTPS

安全策略

指定希望 CloudFront 用于 HTTPS 连接的安全策略。安全策略确定两个设置:

  • CloudFront 与查看器通信所用的最低 SSL/TLS 协议

  • CloudFront 用来加密其返回到查看器的内容的密码

可用的安全策略取决于您为 SSL 证书自定义 SSL 客户端支持指定的值:

  • SSL 证书默认 CloudFront 证书 (*.cloudfront.net) 时,CloudFront 将安全策略值自动设置为 TLSv1

  • SSL 证书自定义 SSL 证书 (example.com),且自定义 SSL 客户端支持仅支持服务器名称指示 (SNI) 的客户端时,您必须使用 TLSv1 或更高版本。我们建议您选择 TLSv1.1_2016,除非您的用户使用的浏览器或设备不支持 TLSv1.1 或更高版本。

  • SSL CertificateCustom SSL Certificate (example.com),且 Custom SSL Client SupportAll Clients 时,建议您选择 TLSv1。在此配置中,TLSv1_2016TLSv1.1_2016TLSv1.2_2018 安全策略不可用。

有关您选择的安全策略与 CloudFront 和查看器通信使用的协议和密码之间的关系的信息,请参阅适用于查看器和 CloudFront 之间通信且支持的 SSL/TLS 协议和密码

最低 SSL 协议版本

请参阅安全策略

支持的 HTTP 版本

选择您希望查看器用来与 CloudFront 进行通信的 HTTP 版本。查看器会使用您为 CloudFront 配置的最新版本。不支持 HTTP/2 的查看器将自动使用早期版本。

要使查看器和 CloudFront 使用 HTTP/2,查看器必须支持 TLS 1.2 或更高版本,并且必须支持服务器名称标识 (SNI)。

一般情况下,将 CloudFront 配置为使用 HTTP/2 与查看器进行通信可降低延迟。您可以针对 HTTP/2 进行优化以提高性能。有关更多信息,请在 Internet 上搜索“http/2 optimization”。

默认根对象

可选。当浏览者请求分配的根 URL (http://www.example.com/) 而不是分配中的对象 (http://www.example.com/product-description.html) 时,您希望 CloudFront 从源(例如,index.html)中请求的对象。指定一个默认根对象,以避免公开分配的内容。

名称的长度上限是 255 个字符。该名称可包含以下任何字符:

  • A-Z, a-z

  • 0-9

  • _ - . * $ / ~ " '

  • &,作为 & 传递和返回

当您指定默认根对象时,请仅输入对象名称,例如 index.html。不要在对象名称前添加 /

有关更多信息,请参阅指定默认根对象

日志记录

您是否希望 CloudFront 记录对象的每个请求信息,并将日志文件存储在 Amazon S3 存储桶中。您可以随时启用或禁用日志记录。启用日志记录不会产生额外的费用,但存储和访问 Amazon S3 存储桶中的文件会产生常规的 Amazon S3 费用。您可以随时删除日志文件。有关 CloudFront 访问日志的更多信息,请参阅配置和使用访问日志

日志存储桶

如果您为日志记录选择打开,您希望 CloudFront 在 Amazon S3 存储桶中存储访问日志,例如,myawslogbucket.s3.amazonaws.com。如果您启用日志记录,CloudFront 记录有关对象的每个最终用户请求的信息,并将文件存储在指定的 Amazon S3 存储桶中。您可以随时启用或禁用日志记录。有关 CloudFront 访问日志的更多信息,请参阅配置和使用访问日志

注意

您必须具有所需的权限才能获取和更新 Amazon S3 存储桶 ACL,并且存储桶的 S3 ACL 必须为您授予 FULL_CONTROL。这允许 CloudFront 提供 awsdatafeeds 账户权限,以将日志文件保存在存储桶中。有关更多信息,请参阅配置日志记录和访问您的日志文件所需的权限

日志前缀

可选。如果您为日志记录选择打开,请指定您希望 CloudFront 在该分配的访问日志文件名前面添加的字符串(如果有),例如,exampleprefix/。尾随斜杠 (/) 是可选的,但建议简化浏览您的日志文件。有关 CloudFront 访问日志的更多信息,请参阅配置和使用访问日志

Cookie 日志记录

如果希望 CloudFront 将 Cookie 包含在访问日志中,请选择打开。如果您选择将 Cookie 包含在日志中,CloudFront 则记录所有 Cookie,而不管您如何配置该分配的缓存行为:转发所有 Cookie,不转发 Cookie,或将指定的 Cookie 列表转发到源。

Amazon S3 不处理 Cookie,因此,除非您的分配也包含 Amazon EC2 或其他自定义源,否则,我们建议您为 Cookie 日志记录值选择关闭

有关 Cookie 的更多信息,请转至 根据 Cookie 缓存内容

启用 IPv6

IPv6 是新版本的 IP 协议。它使用更大的地址空间,并最终取代 IPv4。CloudFront 始终响应 IPv4 请求。如果您希望 CloudFront 响应来自 IPv4 IP 地址(例如 192.0.2.44)的请求和来自 IPv6 地址(例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334)的请求,请选择启用 IPv6

通常,如果您有 IPv6 网络上的用户需要访问您的内容,则应启用 IPv6。不过,如果您使用签名 URL 或签名的 Cookie 来限制对您的内容的访问,并且您使用自定义策略 (该策略包含 IpAddress 参数以限制可访问您的内容的 IP 地址),请不要启用 IPv6。如果您希望按 IP 地址限制对某些内容的访问,而不限制对其他内容的访问 (或限制访问,但不按 IP 地址实施限制),则您可创建两个分配。有关使用自定义策略创建签名 URL 的信息,请参阅使用自定义政策创建签名 URL。有关使用自定义策略创建签名 Cookie 的信息,请参阅使用自定义策略设置签名 Cookie

如果您使用 Route 53 别名资源记录集将流量路由到您的 CloudFront 分配,在满足以下两个条件时,您需要创建另一个别名资源记录集:

  • 您为分配启用 IPv6

  • 您在对象的 URL 中使用备用域名

有关更多信息,请参阅 Amazon Route 53 开发人员指南 中的使用域名将流量路由到 Amazon CloudFront Web 分配

如果您已使用 Route 53 或其他 DNS 服务创建 CNAME 资源记录集,则无需进行任何更改。CNAME 记录会将流量路由到您的分配,无论查看器请求的 IP 地址格式如何。

如果您启用 IPv6 和 CloudFront 访问日志,c-ip 列将包含 IPv4 和 IPv6 格式的值。有关更多信息,请参阅配置和使用访问日志

注意

为了维护客户的高可用性,CloudFront 将使用 IPv4 响应查看器请求 (如果我们的数据表明 IPv4 将提供更佳的用户体验)。要查明 CloudFront 通过 IPv6 提供的请求所占的百分比,请为分配启用 CloudFront 日志记录并解析 c-ip 列,该列包含发出请求的查看器的 IP 地址。此百分比将随时间增大,但仍只占据流量的一小部分,因为 IPv6 并未在全球范围内得到所有查看器网络的支持。一些查看器网络具有很好的 IPv6 支持,但其他查看器网络根本不支持 IPv6。(查看器网络类似于您的家庭 Internet 或无线运营商。)

有关我们对 IPv6 的支持的更多信息,请参阅 CloudFront 常见问题。有关启用访问日志的信息,请参阅字段 日志记录日志存储桶日志前缀

注释

可选。在创建分配时,您最多可以包含 128 字符的注释。您可以随时更新注释。

分配状态

表明您是否希望分配在一经部署时就被启用或禁用:

  • 已启用是指,只要分配一经全面部署,您就可部署使用分配域名的链接,并且用户可检索内容。无论何时启用分配,CloudFront 将接受并处理任何最终用户使用与该分配关联的域名对内容的请求。

    在创建、修改或删除 CloudFront 分配时,需要一段时间以将更改传播到 CloudFront 数据库。即刻发起的对分配相关信息的请求可能不会显示出该更改。传播通常在几分钟内完成,但高系统负载或网络分区可能会延长该时间。

  • 已禁用是指,即使分配可能已经部署且准备好使用,用户也不能使用它。无论何时禁用分配,CloudFront 不接受任何最终用户使用与该分配关联的域名对内容的请求。除非您将分配从禁用切换到启用(通过更新分配的配置),否则任何人都不能使用它。

您可根据您想要的频率在禁用和启用之间转换分配。遵照更新分配配置的过程。有关更多信息,请参阅更新分配

自定义错误页面和错误缓存

在 Amazon S3 或自定义源向 CloudFront 返回 HTTP 4xx 或 5xx 状态代码时,您可以让 CloudFront 向查看器返回一个对象(如 HTML 文件)。您还可以指定从源发出的错误响应或自定义错误页面缓存在 CloudFront 边缘缓存中进行缓存的时间长度。有关更多信息,请参阅 为特定 HTTP 状态代码创建自定义错误页面

注意

以下值不包含在“Create Distribution (创建分配)”向导中,所以您只能在更新分配时配置自定义错误页面。

错误代码

您希望 CloudFront 返回自定义错误页面时所对应的 HTTP 状态代码。您可以将 CloudFront 配置为返回 CloudFront 缓存的无、部分或全部 HTTP 状态代码的自定义错误页面。

响应页面路径

在源返回您为错误代码指定的 HTTP 状态代码(如 403)时,您希望 CloudFront 返回到查看器的自定义错误页面的路径(如 /4xx-errors/403-forbidden.html)。如果您希望将您的对象和自定义错误页面存储在不同的位置,您的分配必须包含满足以下条件时的缓存行为:

  • Path Pattern 的值与您的自定义错误消息的路径匹配。例如,假设您在 Amazon S3 存储桶上名为 /4xx-errors 的目录中保存了 4xx 错误的自定义错误页面。您的分配必须包含缓存行为,其路径模式将对自定义错误页面的请求路由至该位置,例如 /4xx-errors/*

  • 值指定包含您的自定义错误页面的源的源 ID 值。

响应代码

您希望随自定义错误页面一起由 CloudFront 返回到查看器的 HTTP 状态代码。

错误缓存最小 TTL

您希望 CloudFront 缓存从源服务器发出的错误响应的最短时间。

限制

如果您需要阻止选定国家/地区的用户访问您的内容,可以将您的 CloudFront 分配配置为允许指定国家/地区白名单中的用户访问您的内容或不允许指定国家/地区黑名单中的用户访问您的内容。有关更多信息,请参阅 限制您的内容的地理分配

注意

以下值不包含在“Create Distribution (创建分配)”向导中,所以您只能在更新分配时配置地理限制。

启用地理限制

您是否想要阻止选定国家/地区的用户访问您的内容。配置地理限制不收取额外费用。

限制类型

您希望如何指定可访问您的内容的用户所在的国家/地区:

  • 白名单:Countries (国家/地区) 列表包含您希望 访问您的内容的用户所在的所有国家/地区。

  • 黑名单:Countries (国家/地区) 列表包含您 希望访问您的内容的用户所在的所有国家/地区。

国家/地区

您想要添加到白名单或黑名单中的国家/地区。要添加国家/地区,请在左侧列表中选择它,然后选择 Add。请注意以下几点:

  • 要添加多个连续的国家/地区,请选择第一个国家/地区,并按住 Shift 键选择最后一个国家/地区,然后选择 Add

  • 要添加多个不连续的国家/地区,请选择第一个国家/地区,并按住 Ctrl 键选择剩余的国家/地区,然后选择 Add

  • 要在左侧列表中查找国家/地区,请输入国家/地区全名的前几个字符。

  • 如果要使用 CloudFront API 创建或更新分配,需要输入每个国家/地区名称之前的两个字母的代码。我们使用国际标准化组织分配的国家/地区代码。要获取按代码和国家/地区名称分类的易于使用的列表,请参阅 Wikipedia 条目 ISO 3166-1 Alpha2