亚马逊AWS官方博客
CloudFront 部署小指南(二十):介绍 CloudFront SaaS Manager
![]() |
SAAS Manager 概述
Amazon CloudFront SaaS Manager 是 CloudFront 为 SaaS 提供商、多品牌企业和建站平台提供的新一代内容分发解决方案。它的核心功能在于新的多租户分配(Multi-Tenant Distribution) 模式,允许用户在不同租户之间共享全局配置(如源站、缓存策略)的同时满足租户级个性化设置(如自定义域名、WAF Web ACL)。通过自动化证书管理、统一安全防护(集成 AWS WAF 和 Shield)以及批量配置更新,企业可以一键将策略应用到上万个租户,同时支持按需覆盖个别租户的特殊需求。
在接下来的博客中,我们将深入探讨这项新功能的使用场景、部署方法以及实际应用。
使用场景
SaaS 提供商/多品牌企业/建站平台的统一分配架构
CloudFront for SaaS 提供统一的配置管理能力,显著降低多租户场景下的运维复杂度。通过统一配置模板,用户可批量定义缓存策略、安全规则(如 WAF)及源站配置,同时支持为每个租户/品牌分配独立域名。
例如,一家服务数万家商家的电商 SaaS 平台,不同商家有自己的品牌化站点(如 myshop.shopA.com、myshop.shopB.com),但使用统一的源站、缓存规则及安全策略。平台可通过 CloudFront for SaaS 给租户绑定不同域名,并且无需为每个商家单独配置分配或维护证书。
规模化 SSL/TLS 证书管理
针对需为海量租户维护证书的场景,CloudFront SaaS Manager 通过与 AWS Certificate Manager (ACM) 的深度集成,实现证书全生命周期自动化管理。
例如,当电商平台服务数万家商户时,系统可自动为商户域名(如 Myshop1.shopA.com)申请证书、完成 DNS 验证,并在证书到期前 45 天触发续订流程,避免因证书过期导致的访问中断。
租户分级加速与安全策略(基于 Multi-tenant distribution)
针对 SaaS 平台需要为不同层级租户提供差异化加速与安全能力的场景,CloudFront 通过一组多租户分配(Multi-tenant distribution) 实现分层策略的部署与动态扩展。
例如,一家电商 SaaS 平台提供了不同等级的套餐,免费版、高级版、和企业版。可通过 CloudFront SaaS Manager 配置三套多租户分配,基于不同的缓存及安全规则实现商家分级,并通过动态调整租户与多租户分配的关联关系来实现商家套餐升级。
架构及核心概念
![]() |
![]() |
Multi-tenant Distribution(多租户分配):多租户分配是 CloudFront SaaS 架构的基础模板,用于定义所有租户共享的配置设置。您可以在其中配置缓存行为、安全防护策略、源站信息、自定义错误页面等通用设置。多租户分配本身不会直接处理用户流量,而是作为配置模板,为后续创建的分配租户提供统一的基础配置。这种设计确保了所有租户在核心功能上的一致性,同时简化了大规模租户的管理工作。
Distribution Tenant(分配租户):分配租户会自动继承多租户分配中定义的配置,包括缓存策略、安全规则等。同时,分配租户允许在租户级别进行个性化定制,比如设置专属域名、安全规则、配置特定的源路径等。每个分配租户必须配置有效的 TLS 证书来支持 HTTPS 访问,这个证书可以是租户自有的,也可以继承自多租户分发的通配符证书。分配租户必须与连接组关联。CloudFront 会在您创建分配租户时为您创建一个连接组,并自动将所有分配租户关联该连接组。您也可以自定义每个分配租户的连接组。
Connection Group(连接组):为分配租户提供 CloudFront 路由终端节点。当您创建分配租户时,CloudFront 会自动创建一个连接组并建立关联,同时生成该租户专属的 CNAME 记录,用于 DNS 配置。一个连接组可以关联多个分配租户。
Parameters(参数):参数配置通过键值对定义占位符变量(如源路径、源域名),在租户分发中提供自定义值,实现配置(如源路径、源域名)个性化。
部署演示
演示场景:“一家电商 SaaS 平台为数十万商家提供建站服务,商家使用统一的缓存及源请求策略,平台为每个商家提供独立的前缀实现路径隔离,允许商家使用自定义域名,并启用 AWS WAF 进行安全防护”
此演示使用 ELB 作为源站,服务部署在 ELB 目标服务器上,基于路径前缀实现租户隔离
第一步:创建多租户分配
- 提供分配的名称以及通配符域名证书(例如*.shop.com)。
- 选择 ELB 作为源站。
第二步:租户创建
场景一:新商家接入
- 在 CloudFront 控制台,切换到分配租户,点击创建租户,提供分配租户名称,并选择已创建的多租户分配。
- 证书选择 none 并配置店铺域名(例如:shop.online),域名下方会提示:This domain isn’t covered by a certificate.,由于商家域名未托管给平台,我们将在租户创建完成后再进行域名验证,此处忽略该提示直接下一步即可。
- 设置 shop-name 参数为商家名称 shop-1。
- 设置 WAF、地理限制配置。
- Review 配置后点击“创建分配租户”。
- 租户创建完成后,商家需要配置店铺域名的 CNAME 记录,指向分配租户的 endpoint,此处以 Route53 为例。
- CNAME 配置完成后,需要进行分配租户的域名验证,在租户详情页面的 Domain 标签页看到 Domains need attention 的提示,点击 Complete domain setup 进行域名验证。
- 由于该场景为新商家接入,域名还未承载流量,选择 I don’t have traffic yet。
- 至此,您已完成新商家的接入。
场景二:从 CloudFront 标准分配迁移至分配租户
本章节介绍如何使用 AWS 命令行工具将域名(假定为 shop-standard.shop.com)从 CloudFront 标准分配平滑迁移至 CloudFront SaaS 分配租户,具体步骤如下。
- 参考之前章节创建多租户分配。
- 从 ACM 申请证书(或导入证书),确保证书覆盖待迁移域名以及占位符域名(假定为 shop-standard-placehoder.shop.com)。注:由于 CloudFront 限制不允许域名同时归属两个 CloudFront 分配,因此在迁移过程中需要试用占位符域名。
- 从多租户分配创建租户,证书选择第二步创建的证书,域名填写占位符域名。
- 根据需要配置租户参数。
- 根据需要设置分配租户的 WAF、地理限制配置。
- 信息确认无误后点击“创建分配租户”。
- 复制租户分配的 endpoint 备用。
- 在 DNS 服务器创建 DVC txt 记录,验证域名所有权。
- 使用 AWS CLI 将域名从标准分配迁移至分配租户。
- 更新 DNS 解析记录,将 `shop-standard.shop.com` 指向分配租户 endpoint。至此,您已完成域名从标准分配到分配租户的迁移。
场景三:Apex 域名接入
由于 RFC 的限制,Apex 域名无法配置 CNAME,Apex 域名接入有两种方式:
- A record 搭配别名的方式将 Apex 域名指向 CloudFront分配域名;
- 通过 Anycast ip+A 记录
方式一:Route53 alias
我们需要使用 A record 搭配别名的方式将 Apex 域名指向 CloudFront 分配域名,与子域名接入的流程区别在于,Apex 域名需要提前在 ACM 上请求域名证书,并且将域名托管到 Route53,完成备用域名绑定之后再通过 Route53 A record + 别名将 Apex 域名指向 CloudFront 分配域名,而子域名接入可以先接将子域名 CNAME 到 CloudFront 分配域名,再由 ACM 自动颁发子域名证书。
- 参考之前章节创建多租户分配
- 用户将 Apex 域名托管到 Route53(例如:online)
- 在 ACM 上请求 Apex 域名证书,选择 DNS 验证
- 在 Route53 配置上图 CNAME 记录,完成证书域名验证
- 从多租户分配创建租户,选择步骤 3 中请求的 ACM 证书,并配置 Apex 域名
- 根据需求完成 Parameters、WAF、地理限制配置后,点击“创建分配租户”
- 在 Route53 创建 Apex 域名记录,记录名称放空,选择 A 记录并打开别名按钮,选择将流量路由至 CloudFront 分配的别名,选择上述步骤创建的分配域名,点击“创建记录”。至此,您已经完成 Apex 域名的接入
方式二:Anycast ip
Apex 域名无法直接配置 CNAME,可以在 CloudFront 申请 Anycast ip 并与 CloudFront 分配关联,再在 DNS 中添加 A 记录将 Apex 域名指向 Anycast ip,配置方法可参考博客《Amazon CloudFront 部署小指南(十二):Amazon CloudFront Anycast》
通过 CloudFront for SaaS,企业既能保持多租户业务的灵活性,又能像管理单一应用一样高效控制全局,真正实现“一次配置,无限扩展”。