通过 VPC 源限制访问
您可以使用 CloudFront,从托管在您的虚拟私有云(VPC)私有子网中的应用程序提供内容。您可以使用私有子网中的应用程序负载均衡器(ALB)、网络负载均衡器(NLB)和 EC2 实例作为 VPC 源。
以下介绍您可能需要使用 VPC 源的一些原因:
-
安全性 – VPC 源设计用于提升应用程序的安全状况,此方法将您的负载均衡器和 EC2 实例置于私有子网中,从而使 CloudFront 成为单一入口点。用户请求通过私有、安全的连接从 CloudFront 发送到 VPC 源,为您的应用程序增加额外的安全性。
-
管理 – VPC 源减少了在 CloudFront 与源之间建立安全连接所需的运营开销。您可以将源迁移到不具有公共访问权限的私有子网,而且您不必实施访问控制列表(ACL)或其他机制来限制对源的访问。这样,您无需投资于重复性的开发工作,即可使用 CloudFront 来保障 Web 应用程序的安全。
-
可扩展性和性能 – VPC 源可帮助您保护 Web 应用程序,将时间专注于发展业务关键型应用程序,同时使用 CloudFront 提高安全性并保持高性能和全球可扩展性。VPC 源可简化安全管理并降低操作复杂性,这样您就可以将 CloudFront 用作应用程序的单一入口点。
先决条件
在为 CloudFront 分配创建 VPC 源之前,您必须完成以下操作:
-
在 Amazon VPC 上创建虚拟私有云(VPC)。
-
您的 VPC 必须与您的 CloudFront 分配位于相同 Amazon Web Services 账户中。
-
您的 VPC 必须位于支持 VPC 源的 Amazon Web Services 区域中。有关更多信息,请参阅 支持 VPC 源的 Amazon Web Services 区域。
有关创建 VPC 的信息,请参阅《Amazon VPC 用户指南》中的创建 VPC 以及其他 VPC 资源。
-
-
VPC 应包括以下内容:
-
互联网网关 – 必需,这样您的 VPC 才能接收来自互联网的流量。互联网网关并非用于将流量路由到子网内的源,您也不需要更新路由策略。
-
私有子网,有至少一个可用的 IPv4 地址 – CloudFront 使用弹性网络接口(ENI)路由到您的子网,该接口在您定义私有源 CloudFront 资源后由 CloudFront 创建。您的私有子网中必须至少有一个可用的 IPv4 地址,这样才能成功完成 ENI 的创建过程。IPv4 地址可以是私有的,无需支付额外费用。
-
-
在私有子网中,启动应用程序负载均衡器、网络负载均衡器或 EC2 实例用作源。
-
您启动的资源必须完全部署并处于活动状态,然后才能将其用作 VPC 源。
-
要用作 VPC 源,网络负载均衡器上必须附加一个安全组。
-
双堆栈网络负载均衡器和带有 TLS 侦听器的网络负载均衡器不能作为源添加。
-
VPC 源不支持网关负载均衡器。
-
-
更新您的 VPC 私有源(应用程序负载均衡器、网络负载均衡器或 EC2 实例)的安全组,以明确允许 CloudFront 托管的前缀列表。这会限制进入 VPC 源的流量。有关更多信息,请参阅 使用 CloudFront 托管前缀列表。
-
创建 VPC 源后,可以使用安全组来进一步进行限制,仅允许来自您的 VPC 源的流量。为此,请将允许的流量源从托管的前缀列表更新到 CloudFront 安全组。
-
注意
VPC 源不支持 WebSockets、gRPC 流量和在 CloudFront 中使用 Lambda@Edge 重写源。有关更多信息,请参阅 Lambda@Edge 文档中的使用请求和响应。
创建 VPC 源(新分配)
以下过程演示如何在 CloudFront 控制台中,为新 CloudFront 分配创建 VPC 源。或者,您可以将 CreateVpcOrigin 和 CreateDistribution API 操作与 Amazon CLI 或 Amazon SDK 一起使用。
为新 CloudFront 分配创建 VPC 源
通过 https://console.amazonaws.cn/cloudfront/v4/home
打开 CloudFront 控制台 -
选择 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 源
通过 https://console.amazonaws.cn/cloudfront/v4/home
打开 CloudFront 控制台 -
选择 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) |
加拿大(中部) | 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 |