使用亚马逊 O CloudFront rigin Shield - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用亚马逊 O CloudFront rigin Shield

CloudFront Origin Shield 是 CloudFront 缓存基础设施中的一个附加层,有助于最大限度地减少源站的负载、提高其可用性并降低其运营成本。借助 CloudFront Origin Shield,您可以获得以下优势:

更好的缓存命中率

Origin Shield 可以帮助提高 CloudFront 发行版的缓存命中率,因为它在源站前面提供了额外的缓存层。当你使用 Origin Shield 时,所有缓存层发往你的源站的所有请求都会通过 Origin Shield,这增加了缓存命中的可能性。 CloudFront CloudFront可以通过从 Origin Shield 向你的来源发出单个源请求来检索每个对象,缓存的所有其他层(边缘位置和区域边缘 CloudFront 缓存)都可以从 Orig in Shield 中检索对象。

减少源负荷

Origin Shield 可以进一步减少针对同一对象发送到源的同时请求的数量。对不在 Origin Shield 缓存中的内容的请求将与对同一对象的其他请求合并,从而导致发往源的请求只有一个。在源站处理较少的请求可以保持源站在高峰负载或意外流量高峰期间的可用性,还可以降低 just-in-time打包、图像转换和数据传出 (DTO) 等方面的成本。

更好的网络性能

当您在与源之间的延迟最短的 Amazon 区域中启用 Origin Shield 时,可以获得更好的网络性能。对于Amazon区域内的起源站, CloudFront 网络流量一直保持在高吞吐量 CloudFront 网络上,一直延伸到您的源站。对于以外的来源Amazon, CloudFront 网络流量一直保持在网络上,直到 Origin Shield,Origin Shield 与您的源站的连接延迟很短。 CloudFront

使用 Origin Shield 需要支付额外费用。有关更多信息,请参阅CloudFront 定价

Origin Shield 的使用案例

CloudFront Origin Shield 可能对许多用例都有好处,包括以下用例:

  • 分布在不同地理区域的查看器

  • 为直播或 on-the-fly图像处理提供 just-in-time 包装的来源

  • 具有容量或带宽限制的内部源

  • 使用多个内容分发网络 (CDN) 的工作负载

Origin Shield 可能不太适合其他情况,例如通过代理到达源的动态内容、可缓存性低的内容或不经常请求的内容。

以下各节介绍 Origin Shield 在以下使用案例中的优势。

位于不同地理区域的查看器

使用 Amazon CloudFront,您本质上可以减少源站的负载,因为 CloudFront 可以从缓存中处理的请求不会发送到您的源。除了边缘站点 CloudFront的全球网络外,区域边缘存还充当中间层缓存层,为附近地理区域的观众提供缓存命中率和整合源请求。查看器请求首先路由到附近的 CloudFront 边缘站点,如果对象未在该站点缓存,则请求将发送到区域边缘缓存。

当查看器位于不同的地理区域时,请求可以通过不同的区域边缘缓存进行路由,其中每个缓存都可以向您的源发送对相同内容的请求。但使用 Origin Shield,您可以在区域边缘缓存和源之间获得额外的缓存层。来自所有区域边缘缓存的所有请求都经过 Origin Shield,从而进一步减少源上的负载。下面的示意图对此进行说明。在下图中,源为 AWS Elemental MediaPackage。

不使用 Origin Shield

如果没有 Origin Shield,源可能会收到针对相同内容的重复请求,如下图所示。


                    如果没有  CloudFront  Origin Shield,源站可能会收到重复的请求。

使用 Origin Shield

使用 Origin Shield 有助于减少源上的载荷,如下图所示。


                    使用  CloudFront  Origin Shield,源站可以减少收到的重复请求。

多个 CDN

要提供实时视频活动或热门点播内容,您可以使用多个内容分发网络 (CDN)。使用多个 CDN 可以提供某些优势,但这也意味着源可能会收到许多对同一内容的重复请求,每个请求来自不同的 CDN 或同一 CDN 内的不同位置。这些冗余的请求可能会对源站的可用性产生不利影响,或者给 just-in-time 打包或将数据传出 (DTO) 到互联网等流程带来额外的运营成本。

当你将 Origin Shield 与使用你的 CloudFront 发行版作为其他 CDN 的来源结合使用时,你可以获得以下好处:

  • 减少源收到的冗余请求数量,这有助于减少使用多个 CDN 的负面影响。

  • 跨 CDN 的通用缓存密钥,以及面向源的功能的集中管理。

  • 提高了网络性能。来自其他 CDN 的网络流量在附近的 CloudFront 边缘位置终止,这可能会带来来自本地缓存的命中。如果请求的对象不在边缘位置缓存中,则对源站的请求将一直保留在 CloudFront 网络上,直到 Origin Shield,Origin Shield 为源提供了高吞吐量和低延迟。如果请求的对象位于 Origin Shield 的缓存中,则完全避免对源的请求。

重要

如果您有兴趣在多 CDN 架构中使用 Origin Shield,并且享有折扣价格,请联系我们或您的 Amazon 销售代表以获取更多信息。可能收取额外费用。

下图显示了当您使用多个 CDN 提供流行的实时视频活动时,此配置如何帮助最大限度地减少源上的负载。在下图中,源为 AWS Elemental MediaPackage。

不使用 Origin Shield(多个 CDN)

如果不使用 Origin Shield,源可能会收到针对相同内容的重复请求,每个请求来自不同的 CDN,如下图所示。


                    如果没有  CloudFront  Origin Shield,源站可能会收到许多重复的请求,每个请求都来自不同的 CDN。

使用 Origin Shield(多个 CDN)

使用 Origin Shield CloudFront 作为其他 CDN 的来源,可以帮助减轻源站的负载,如下图所示。


                    有了  CloudFront  Origin Shield, CloudFront 作为其他 CDN 的来源,源站收到的重复请求就会减少。

为 Origin Shield 选择 Amazon 区域

亚马逊在 CloudFront 有区域边缘缓存的Amazon地区 CloudFront 提供 Origin Shield。启用 Origin Shield 后,可以为 Origin Shield 选择 Amazon 区域。您应该选择与源之间具有最低延迟的 Amazon 区域。您可以将 Origin Shield 与位于 Amazon 区域中的源和不在 Amazon 中的源结合使用。

对于 Amazon 区域中的源

如果您的起源地位于某个Amazon区域,请先确定您的起源地是否位于 CloudFront 提供 Origin Shield 的区域。 CloudFront 在以下Amazon区域提供 Origin Shield。

  • 美国东部(俄亥俄)– (us-east-2)

  • 美国东部(弗吉尼亚北部)– us-east-1

  • 美国西部(俄勒冈)– us-west-2

  • 亚太地区(孟买)– (ap-south-1)

  • 亚太地区(首尔)– (ap-northeast-2)

  • 亚太地区(新加坡)– (ap-southeast-1)

  • 亚太地区(悉尼)– ap-southeast-2

  • 亚太地区(东京)– (ap-northeast-1)

  • 欧洲(法兰克福)– eu-central-1

  • 欧洲(爱尔兰)– eu-west-1

  • 欧洲(伦敦)– eu-west-2

  • 南美洲(圣保罗)– (sa-east-1)

如果你的起源地位于 CloudFront 提供 Origin Shield 的Amazon区域

如果您的起源地位于 CloudFront 提供 Origin Shield 的Amazon区域(参见上面的列表),请在与您的来源相同的区域启用 Origin Shield。

如果源不在 CloudFront 提供 Origin Shield 的 Amazon 区域中

如果您的起源地不在 CloudFront 提供 Origin Shield 的Amazon区域,请参阅下表以确定在哪个区域启用 Origin Shield。

如果源位于...

启用 Origin Shield 的位置...

美国西部(加利福尼亚北部)– us-west-1

美国西部(俄勒冈)– us-west-2

非洲(开普敦)– af-south-1

欧洲(爱尔兰)– eu-west-1

亚太地区(香港)– ap-east-1

亚太地区(新加坡)– (ap-southeast-1)

加拿大(中部)– ca-central-1

美国东部(弗吉尼亚北部)– us-east-1

欧洲(米兰)– eu-south-1

欧洲(法兰克福)– eu-central-1

欧洲(巴黎)– eu-west-3

欧洲(伦敦)– eu-west-2

欧洲(斯德哥尔摩)– eu-north-1

欧洲(伦敦)– eu-west-2

中东(巴林)– me-south-1

亚太地区(孟买)– (ap-south-1)

对于之外的源Amazon

您可以将 Origin Shield 与本地或不在 Amazon 区域中的源结合使用。在这种情况下,请在与源之间的延迟最低的 Amazon 区域中启用 Origin Shield。如果您不确定哪个 Amazon 区域与源之间的延迟最低,您可以使用以下建议来帮助做出决定。

  • 您可以参阅上表,根据源的地理位置,了解哪个 Amazon 区域可能与源之间具有最低延迟的近似情况。

  • 您可以在地理位置靠近源的几个不同 Amazon 区域中启动 Amazon EC2 实例,并使用 ping 运行一些测试来测量这些区域与源之间的典型网络延迟。

启用 Origin Shield

您可以启用 Origin Shield 来提高缓存命中率,减少源上的负载,并帮助提高性能。要启用 Origin Shield,请更改 CloudFront 分配中的起源设置。Origin Shield 是源的一个属性。对于 CloudFront 分布中的每个来源,您可以在为该来源提供最佳性能的Amazon区域中单独启用 Origin Shield。

你可以在 CloudFront 控制台中启用 Origin Shield,也可以使用 Amazon CloudFormation CloudFront API 启用 Origin Shield。

Console
为现有源启用 Origin Shield(控制台)
  1. 登录Amazon Web Services Management Console并打开 CloudFront 控制台,网址为https://console.amazonaws.cn/cloudfront/v4/home

  2. 选择具有要更新的源的分配。

  3. 选择 Origins and Origin Groups (源和源组) 选项卡。

  4. 选择要更新的源,然后选择编辑

  5. 对于启用 Origin Shield ,选择

  6. 对于 Origin Shield 区域,选择要在其中启用 Origin Shield 的 Amazon 区域。有关选择区域的帮助,请参阅为 Origin Shield 选择 Amazon 区域

  7. 在页面底部选择是,编辑

当您的分配状态为已部署时,Origin Shield 已准备就绪。这需要几分钟。

为新源启用 Origin Shield(控制台)
  1. 登录Amazon Web Services Management Console并打开 CloudFront 控制台,网址为https://console.amazonaws.cn/cloudfront/v4/home

  2. 要在现有分配中创建新源,请执行以下操作:

    1. 选择要在其中创建源的分配。

    2. 选择创建源,然后继续执行步骤 3。

    要在新分配中创建新源,请执行以下操作:

    1. 选择 Create Distribution

    2. Web 部分中,选择入门。在源设置部分,完成以下步骤,从步骤 3 开始。

  3. 对于启用 Origin Shield ,选择

  4. 对于 Origin Shield 区域,选择要在其中启用 Origin Shield 的 Amazon 区域。有关选择区域的帮助,请参阅为 Origin Shield 选择 Amazon 区域

    如果要创建新的分配,请使用页面上的其他设置继续配置分配。有关更多信息,请参阅 您创建或更新分配时指定的值

  5. 请确保通过选择创建(对于现有分配中的新源)或创建分配(对于新分配中的新源)来保存更改。

当您的分配状态为已部署时,Origin Shield 已准备就绪。这需要几分钟。

Amazon CloudFormation

要使用 Amazon CloudFormation 启用 Origin Shield,请使用 OriginShield 资源的 Origin 属性类型中的 AWS::CloudFront::Distribution 属性。您可以将 OriginShield 属性添加到现有 Origin 属性,也可以在创建新的 Origin 属性时将其包括在内。

以下示例以 YAML 格式显示在美国西部(俄勒冈)区域 (OriginShield) 中启用 us-west-2 的语法。有关选择区域的帮助,请参阅为 Origin Shield 选择 Amazon 区域。此示例仅显示 Origin 属性类型,而不显示整个 AWS::CloudFront::Distribution 资源。

Origins: - DomainName: 3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com Id: Example-EMP-3ae97e9482b0d011 OriginShield: Enabled: true OriginShieldRegion: us-west-2 CustomOriginConfig: OriginProtocolPolicy: match-viewer OriginSSLProtocols: TLSv1

有关更多信息,请参阅《Amazon CloudFormation用户指南》资源和属性参考部分中的 O AWS::CloudFront::Distribution rigin

API

要使用Amazon软件开发工具包或 Amazon Command Line Interface (Amazon CLI) CloudFront 通过 API 启用 Origin Shield,请使用OriginShield类型。您可以在 OriginShieldOrigin 中指定 DistributionConfig。有关该OriginShield类型的信息,请参阅 Amazon CloudFront API 参考中的以下信息。

使用这些类型和操作的具体语法因开发工具包、CLI 或 API 客户端而异。有关更多信息,请参阅开发工具包、CLI 或客户端的参考文档。

估算 Origin Shield 成本

您可以根据作为增量层转到 Origin Shield 的请求数量来计算 Origin Shield 的费用。

对于通过代理到达源的动态(不可缓存)请求,Origin Shield 始终是增量层。动态请求使用以下 HTTP 方法:PUTPOSTPATCHDELETE

要针对动态请求估计 Origin Shield 的费用,请使用以下公式:

动态请求总数 x 每 10,000 个请求的 Origin Shield 费用 / 10,000

对于可缓存请求(HTTP 方法 GETHEADOPTIONS),Origin Shield 有时是一个增量层。启用 Origin Shield 后,可以为 Origin Shield 选择 Amazon 区域。对于自然转到与 Origin Shield 位于相同区域中的区域边缘缓存的请求,Origin Shield 不是增量层。您不会为这些请求累积 Origin Shield 费用。对于转到与 Origin Shield 位于不同区域中的区域边缘缓存,然后转到 Origin Shield 的请求,Origin Shield 为增量层。您确实需要为这些请求累积 Origin Shield 费用。

要针对可缓存的请求估计 Origin Shield 的费用,请使用以下公式:

可缓存请求总数 x(1 - 缓存命中率)x 从不同区域的区域边缘缓存转到 Origin Shield 的请求的百分比 x 每 10,000 个请求的 Origin Shield 费用 / 10,000

有关 Origin Shield 每 10,000 个请求收取的费用的更多信息,请参阅 CloudFront 定价

Origin Shield 高可用性

Origin Shield 利用 CloudFront了亚马逊的区域边缘缓存。其中每个边缘缓存都在一个 Amazon 区域中使用至少三个可用区以及自动伸缩 Amazon EC2 实例队列而构建。从 CloudFront 位置到 Origin Shield 的连接还会对每个请求使用主动错误跟踪,以便在主要 Origin Shield 位置不可用时,自动将请求路由到辅助 Origin Shield 位置。

Origin Shield 如何与其他 CloudFront 功能互动

以下各节介绍 Origin Shield 如何与其他 CloudFront 功能进行交互。

Origin Shield 和 CloudFront 日志记录

要查看 Origin Shield 何时处理了请求,必须启用以下选项之一:

来自 Origin Shield 的缓存命OriginShieldHit中显示为 CloudFront 日志中的x-edge-detailed-result-type字段。Origin Shield 利用 CloudFront了亚马逊的区域边缘缓存。如果请求从 CloudFront 边缘站点路由到充当 Origin Shield 的区域边缘缓存,则会在日志Hit中将其报告为 a,而不是作为OriginShieldHit

Origin Shield 和源组

Origin Shield 与 CloudFront 源组兼容。由于 Origin Shield 是源的一个属性,因此,对于每个源,请求始终会通过 Origin Shield,即使源是源组的一部分也是如此。对于给定的请求,通过主起源的 Origin Shield 将请求 CloudFront 路由到起源组中的主要来源。如果该请求失败(根据源组故障转移标准),则通过辅助来源的 Origin Shield 将请求 CloudFront 路由到辅助源。

Origin Shield 和 Lambda@Edge

Origin Shield 不会影响 Lambda@Edge 函数的功能,但会影响运行这些函数的 Amazon 区域。当您将 Origin Shield 与 Lambda@Edge 一起使用时,面向源的触发器(源请求和源响应)会在启用 Origin Shield 的 Amazon 区域中运行。面向查看器的触发器不受影响。