通过 VPC 源限制访问
您可以使用 CloudFront,从托管在您的虚拟私有云(VPC)私有子网中的应用程序提供内容。您可以使用私有子网中的应用程序负载均衡器(ALB)、网络负载均衡器(NLB)和 EC2 实例作为 VPC 源。
以下介绍您可能需要使用 VPC 源的一些原因:
-
安全性 – VPC 源设计用于提升应用程序的安全状况,此方法将您的负载均衡器和 EC2 实例置于私有子网中,从而使 CloudFront 成为单一入口点。用户请求通过私有、安全的连接从 CloudFront 发送到 VPC 源,为您的应用程序增加额外的安全性。
-
管理 – VPC 源减少了在 CloudFront 与源之间建立安全连接所需的运营开销。您可以将源迁移到不具有公共访问权限的私有子网,而且您不必实施访问控制列表(ACL)或其他机制来限制对源的访问。这样,您无需投资于重复性的开发工作,即可使用 CloudFront 来保障 Web 应用程序的安全。
-
可扩展性和性能:VPC 源有助于您保护 Web 应用程序,将时间专注于发展业务关键型应用程序,同时使用 CloudFront 提高安全性并保持高性能和全球可扩展性。VPC 源可简化安全管理并降低操作复杂性,这样您就可以将 CloudFront 用作应用程序的单一入口点。
提示
CloudFront 支持跨 Amazon Web Services 账户共享 VPC 源,无论它们是否在您的组织中。您可以通过 CloudFront 控制台或 Amazon Resource Access Manager(Amazon RAM)共享 VPC 源。有关更多信息,请参阅 在 CloudFront 中使用共享的资源。
先决条件
在为 CloudFront 分配创建 VPC 源之前,您必须完成以下操作:
VPC 配置
在 VPC 源支持的其中一个 Amazon Web Services 区域中,在 Amazon VPC 上创建虚拟私有云(VPC)。有关创建 VPC 的信息,请参阅《Amazon VPC 用户指南》中的创建 VPC 以及其他 VPC 资源。有关受支持区域的列表,请参阅支持 VPC 源的 Amazon Web Services 区域。
VPC 必须包括以下各项:
-
互联网网关:您需要向具有 VPC 源资源的 VPC 添加互联网网关。互联网网关是必需的,以指明 VPC 可以接收来自互联网的流量。互联网网关并不用于将流量路由到子网内的源,您也不需要更新路由策略。
-
私有子网,有至少一个可用的 IPv4 地址:CloudFront 使用服务托管式弹性网络接口(ENI)路由到您的子网,CloudFront 在您使用 CloudFront 定义 VPC 源资源后创建该接口。您的私有子网中必须至少有一个可用的 IPv4 地址,这样才能成功完成 ENI 的创建过程。IPv4 地址可以是私有的,无需支付额外费用。不支持仅 IPv6 子网。
源资源
在私有子网中,启动应用程序负载均衡器、网络负载均衡器或 EC2 实例用作源。您启动的资源必须完全部署并处于活动状态,然后才能将其用作 VPC 源。
源限制:
-
网关负载均衡器不能添加为源
-
双栈网络负载均衡器不能添加为源
-
带有 TLS 侦听器的网络负载均衡器不能添加为源
-
要用作 VPC 源,网络负载均衡器必须附加了一个安全组
安全组配置
您的 VPC 源资源(应用程序负载均衡器、网络负载均衡器或 EC2 实例)必须附加了一个安全组。当您创建 VPC 源时,CloudFront 会自动创建一个采用命名模式 CloudFront-VPCOrigins-Service-SG 的服务管理的安全组。此安全组完全由 Amazon 管理,不应编辑。
要支持来自 CloudFront 的流量到达您的 VPC 源,请使用以下方法之一更新附加到源资源(ALB、NLB 或 EC2 实例)的安全组以支持入站流量:
-
选项 1:支持来自 CloudFront 托管式前缀列表的流量。有关更多信息,请参阅 使用 CloudFront 托管前缀列表。这也可以在创建 VPC 源之前完成。
-
选项 2:支持来自 CloudFront 服务托管式安全组 (
CloudFront-VPCOrigins-Service-SG) 的流量。只有在创建 VPC 源并创建服务托管式安全组之后,才能执行此操作。此配置更具限制性,因为它将流量限制为仅限您的 CloudFront 分配。
重要
请勿使用以 CloudFront-VPCOrigins-Service-SG 开头的名称创建您自己的安全组。这是服务托管式安全组的 Amazon 保留命名模式。有关更多信息,请参阅创建安全组。
协议和功能限制
VPC 源不支持以下各项:
-
WebSocket
-
gRPC 流量
-
使用 Lambda@Edge 的源请求和源响应触发器
创建 VPC 源(新分配)
以下过程演示如何在 CloudFront 控制台中,为新 CloudFront 分配创建 VPC 源。或者,您可以将 CreateVpcOrigin 和 CreateDistribution API 操作与 Amazon CLI 或 Amazon SDK 一起使用。
为新 CloudFront 分配创建 VPC 源
通过以下网址打开 CloudFront 控制台:https://console.amazonaws.cn/cloudfront/v4/home
。 -
选择 VPC 源、创建 VPC 源。
-
填写必填字段。在源 ARN 中,选择应用程序负载均衡器、网络负载均衡器或 EC2 实例的 ARN。如果未显示 ARN,可以复制特定资源 ARN,然后将其粘贴到此处。
-
选择创建 VPC 源。
-
等待 VPC 源状态更改为已部署。这一过程耗时最多 15 分钟。
-
选择分配、创建分配。
-
对于源域,从下拉列表中选择您的 VPC 源资源。
如果您的 VPC 源是 EC2 实例,请复制实例的私有 IP DNS 名称并粘贴到源域字段中。
-
完成分配的创建。有关更多信息,请参阅 在控制台中创建 CloudFront 分配。
创建 VPC 源(现有分配)
以下过程演示如何在 CloudFront 控制台中,为现有 CloudFront 分配创建 VPC 源,这有助于确保应用程序的持续可用性。或者,您可以将 CreateVpcOrigin 和 UpdateDistributionWithStagingConfig API 操作与 Amazon CLI 或 Amazon SDK 一起使用。
(可选)您可以选择将 VPC 源添加到现有分配中,而不创建暂存分配。
为现有 CloudFront 分配创建 VPC 源
通过以下网址打开 CloudFront 控制台:https://console.amazonaws.cn/cloudfront/v4/home
。 -
选择 VPC 源、创建 VPC 源。
-
填写必填字段。在源 ARN 中,选择应用程序负载均衡器、网络负载均衡器或 EC2 实例的 ARN。如果未显示 ARN,可以复制特定资源 ARN,然后将其粘贴到此处。
-
选择创建 VPC 源。
-
等待 VPC 源状态更改为已部署。这一过程耗时最多 15 分钟。
-
在导航窗格中,选择分配。
-
选择分配的 ID。
-
在常规选项卡的持续部署下,选择创建暂存分配。有关更多信息,请参阅 使用 CloudFront 持续部署来安全地测试 CDN 配置更改。
-
按照创建暂存分配向导中的步骤创建暂存分配。其中包括以下步骤:
-
对于源,选择创建源。
-
对于源域,从下拉菜单中选择您的 VPC 源资源。
如果您的 VPC 源是 EC2 实例,请复制实例的私有 IP DNS 名称并粘贴到源域字段中。
-
选择创建源。
-
-
在暂存分配中,测试 VPC 源。
-
将暂存分配配置提升到主分配。有关更多信息,请参阅 提升暂存分配的配置。
-
通过将子网设为私有子网,移除对 VPC 源的公开访问。执行此操作后,VPC 源将无法通过互联网发现,但是 CloudFront 仍可对其进行私有访问。有关更多信息,请参阅《Amazon VPC 用户指南》中的将子网与路由表关联或取消关联。
更新 VPC 源
以下过程演示如何在 CloudFront 控制台中,更新 CloudFront 分配的 VPC 源。或者,您可以将 UpdateDistribution 和 UpdateVpcOrigin API 操作与 Amazon CLI 或 Amazon SDK 一起使用。
为 CloudFront 分配更新现有 VPC 源
通过 https://console.amazonaws.cn/cloudfront/v4/home
打开 CloudFront 控制台 -
在导航窗格中,选择分配。
-
选择分配的 ID。
-
选择行为选项卡。
-
确保 VPC 源不是缓存行为的默认源。
-
选择源选项卡。
-
选择要更新的 VPC 源,然后选择删除。这会取消 VPC 源与分配的关联。重复步骤 2-7,取消 VPC 源与任何其他分配的关联。
-
选择 VPC 源。
-
选择 VPC 源并选择编辑。
-
进行相应更新并选择更新 VPC 源。
-
等待 VPC 源状态更改为已部署。这一过程耗时最多 15 分钟。
-
在导航窗格中,选择分配。
-
选择分配的 ID。
-
选择源选项卡。
-
选择创建源。
-
对于源域,从下拉菜单中选择您的 VPC 源资源。
如果您的 VPC 源是 EC2 实例,请复制实例的私有 IP DNS 名称并粘贴到源域字段中。
-
选择创建源。这会再次将 VPC 源与您的分配相关联。重复步骤 12-17,将更新后的 VPC 源与任意其他分配相关联。
支持 VPC 源的 Amazon Web Services 区域
目前,以下商用 Amazon Web Services 区域中支持 VPC 源。可用区(AZ)例外情况已注明。
| 区域名称 | 区域 |
|---|---|
| 美国东部(俄亥俄州) | us-east-2 |
| 美国东部(弗吉尼亚州北部) | us-east-1 (except AZ
use1-az3) |
| 美国西部(北加利福尼亚) | us-west-1 (except AZ
usw1-az2) |
| 美国西部(俄勒冈州) | us-west-2 |
| 非洲(开普敦) | af-south-1 |
| 亚太地区(香港) | ap-east-1 |
| Asia Pacific (Mumbai) | ap-south-1 |
| 亚太地区(海得拉巴) | ap-south-2 |
| 亚太地区(雅加达) | ap-southeast-3 |
| 亚太地区(墨尔本) | ap-southeast-4 |
| 亚太地区(大阪) | ap-northeast-3 |
| 亚太地区(新加坡) | ap-southeast-1 |
| 亚太地区(悉尼) | ap-southeast-2 |
| 亚太地区(东京) | ap-northeast-1 (except AZ
apne1-az3) |
| 亚太地区 (首尔) | ap-northeast-2 (except AZ
apne2-az1) |
| 亚太地区(泰国) | ap-southeast-7 |
| 亚太地区(马来西亚) | ap-southeast-5 |
| 亚太地区(台北) | ap-east-2 |
| 加拿大(中部) | ca-central-1 (except AZ
cac1-az3) |
| 加拿大西部(卡尔加里) | ca-west-1 |
| 欧洲地区(法兰克福) | eu-central-1 |
| 欧洲地区(爱尔兰) | eu-west-1 |
| 欧洲地区(伦敦) | eu-west-2 |
| 欧洲地区(米兰) | eu-south-1 |
| 欧洲地区(巴黎) | eu-west-3 |
| 欧洲(西班牙) | eu-south-2 |
| 欧洲地区(斯德哥尔摩) | eu-north-1 |
| 欧洲(苏黎世) | eu-central-2 |
| 以色列(特拉维夫) | il-central-1 |
| 中东(巴林) | me-south-1 |
| 中东(阿联酋) | me-central-1 |
| 南美洲(圣保罗) | sa-east-1 |
| 墨西哥(中部) | mx-central-1 |