通过 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 |
亚太地区(孟买) | 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 |