

# 了解多租户分配的工作原理
<a name="distribution-config-options"></a>

可以使用可在多个分配租户之间重用的设置来创建 CloudFront 多租户分配。使用多租户分配，可以让 CloudFront 根据内容源类型为您配置分配设置。有关预配置设置的更多详细信息，请参阅 [预配置的分配设置参考](template-preconfigured-origin-settings.md)。

使用多租户分配而不是标准分配的优势包括：
+ 减轻运营负担。
+ 面向 Web 管理员和软件提供商的可重用配置，用于管理向终端用户交付内容的多个 Web 应用程序的 CloudFront 分配。
+ 与其它 AWS 服务的增强集成，可大规模提供自动证书管理、统一的安全控制和轻松的配置控制。
+ 在实施中保持一致的资源模式。定义必须共享的设置，然后为要覆盖的设置指定自定义项。
+ 可自定义的源和安全设置，以满足分配租户级别的特定需求。
+ 将分配租户组织成不同的层级。例如，如果一些分配租户需要源护盾，而一些分配租户不需要，您可以将分配租户分组为不同的多租户分配。
+ 在多个域间共享通用 DNS 配置。

与标准分配不同，无法直接访问多租户分配，因为它没有 CloudFront 路由端点。因此，它必须与连接组和一个或多个分配租户结合使用。尽管标准分配具有其自己的 CloudFront 端点，并且可以由终端用户直接访问，但它们不能用作其它分配的模板。

有关多租户分配配额的信息，请参阅[有关多租户分配的配额](cloudfront-limits.md#limits-template)。

**Topics**
+ [工作原理](#how-template-distribution-works)
+ [术语](#template-distributions-concepts)
+ [不支持的功能](#unsupported-saas)
+ [分配租户自定义](tenant-customization.md)
+ [为 CloudFront 分配租户申请证书](managed-cloudfront-certificates.md)
+ [创建自定义连接组（可选）](custom-connection-group.md)
+ [迁移到多租户分配](template-migrate-distribution.md)

## 工作原理
<a name="how-template-distribution-works"></a>

在*标准分配*中，分配包含您要为网站或应用程序启用的所有设置，例如源配置、缓存行为和安全设置。如果您想创建一个单独的网站并使用许多相同的设置，则每次都需要创建新的分配。

CloudFront 多租户分配的不同之处在于，您可以创建一个初始多租户分配。对于每个新网站，您都要创建一个分配租户，该租户会自动继承其源分配的已定义值。然后，可以为分配租户自定义特定的设置。

**概述**

1. 首先，您需要创建一个多租户分配。CloudFront 根据内容源类型为您配置分配设置。可以为除 VPC 源以外的所有源自定义设置。VPC 源设置是在 VPC 源资源本身上自定义的。有关您可以自定义的多租户分配设置的更多信息，请参阅 [预配置的分配设置参考](template-preconfigured-origin-settings.md)。
   + 分配租户可以继承您用于多租户分配的 TLS 证书。多租户分配本身是不可路由的，因此它不会有与之关联的域名。

1. 默认情况下，CloudFront 会为您创建一个连接组。连接组控制着查看器对内容的请求如何连接到 CloudFront。您可以在连接组中自定义一些路由设置。

   您可以通过手动创建自己的连接组来对此进行更改。有关更多信息，请参阅 [创建自定义连接组（可选）](custom-connection-group.md)。

1. 然后，创建一个或多个分配租户。分配租户是查看器访问您的内容的“前门”。每个分配租户都引用多租户分配，并自动与 CloudFront 为您创建的连接组关联。分配租户支持单独的域或子域。

1. 然后，您可以自定义一些分配租户设置，例如虚拟域和源路径。有关更多信息，请参阅 [分配租户自定义](tenant-customization.md)。

1. 最后，您必须更新 DNS 主机中的 DNS 记录，才能将流量路由到分配租户。为此，请从连接组中获取 CloudFront 端点值，然后创建指向 CloudFront 端点的 CNAME 记录。

**Example 示例**  
下图演示了多租户分配、分配租户和连接组如何协同工作，来为多个域的查看器提供内容。  

1. 多租户分配定义了每个分配租户的继承设置。可以使用多租户分配作为模板。

1. 从多租户分配中创建的每个分配租户都有其自己的域。

1. 分配租户会自动添加到当您创建多租户分配时 CloudFront 为您创建的连接组中。连接组控制着查看器请求如何连接到 CloudFront 网络。

![\[多租户分配如何与分配租户结合使用。\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudFront/latest/DeveloperGuide/images/template_distribution.png)


有关创建多租户分配的详细说明，请参阅[在控制台中创建 CloudFront 分配](distribution-web-creating-console.md#create-console-distribution)。

## 术语
<a name="template-distributions-concepts"></a>

以下概念描述了多租户分配的组件：

**多租户分配**  
一种蓝图、多租户分配，它为任何分配租户指定所有共享配置设置，包括缓存行为、安全保护和源。多租户分配无法直接提供流量。它们必须与连接组和分配租户结合使用。

**标准分配**  
不具有多租户功能的分配。这些分配最适合支持单个网站或应用程序。

**分配租户**  
分配租户继承多租户分配配置。某些配置设置可以在分配租户级别进行自定义。分配租户必须拥有有效的 TLS 证书，只要该证书涵盖分配租户域或子域，就可以从多租户分配中继承该证书。  
分配租户必须与连接组关联。当您创建分配租户时，CloudFront 会为您创建一个连接组，并自动将所有分配租户分配给该连接组。

**多租户**  
可以使用多租户分配跨多个域提供内容，同时共享配置和基础设施。这种方法可让不同的域（称为租户）共享多租户分配中的通用设置，同时保持自己的自定义设置。

**连接组**  
提供向查看器提供内容的 CloudFront 路由端点。您必须将每个分配租户与一个连接组关联，才能为您针对分配租户域或子域创建的 CNAME 记录获取相应的 CloudFront 路由端点。连接组可以在多个分配租户间共享。连接组管理分配租户的路由设置，例如 IPv6 和任播 IP 列表设置。

**参数**  
占位符值（例如源路径和域名）的键值对列表。您可以在多租户分配中定义参数，并在分配租户级别为这些参数提供值。您可以选择是否需要为分配租户输入参数值。  
如果您没有为分配租户中的某个可选参数提供值，则多租户分配中的默认值将用作该值。

**CloudFront 路由端点**  
连接组的规范 DNS，例如 `d123.cloudfront.net`。在分配租户域或子域的 CNAME 记录中使用。

**自定义内容**  
您可以自定义分配租户，以便它们使用与多租户分配*不同*的设置。对于每个分配租户，您可以指定不同的 AWS WAF Web 访问控制列表（ACL）、TLS 证书和地理限制。

## 不支持的功能
<a name="unsupported-saas"></a>

以下功能不能用于多租户分配。如果您想使用与标准分配相同的设置来创建新的多租户分配，请注意某些设置不可用。

**备注**  
目前，AWS Firewall Manager 策略仅适用于标准分配。Firewall Manager 将在未来的版本中增加对多租户分配的支持。
与标准分配不同，您可以在*分配租户*级别指定域名（别名）。有关更多信息，请参阅[为 CloudFront 分配租户申请证书](managed-cloudfront-certificates.md)和 [CreateDistributionTenant](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistributionTenant.html) API 操作。
+ [持续部署](continuous-deployment.md)
+ [来源访问身份（OAI）](private-content-restricting-access-to-s3.md#private-content-restricting-access-to-s3-oai)：改用[来源访问控制（OAC）](private-content-restricting-access-to-origin.md)。
+ [专用 IP 自定义 SSL 支持](DownloadDistValuesGeneral.md#DownloadDistValuesClientsSupported)：仅支持 `sni-only` 方法。
+ [AWS WAF 经典（V1）Web ACL](DownloadDistValuesGeneral.md#DownloadDistValuesWAFWebACL)：仅支持 AWS WAF V2 Web ACL。
+ [标准日志记录（旧版）](standard-logging-legacy-s3.md)
+ [最小 TTL](DownloadDistValuesCacheBehavior.md#DownloadDistValuesMinTTL)
+ [默认 TTL](DownloadDistValuesCacheBehavior.md#DownloadDistValuesDefaultTTL)
+ [最大 TTL](DownloadDistValuesCacheBehavior.md#DownloadDistValuesMaxTTL)
+ [ForwardedValues](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ForwardedValues.html)
+ [PriceClass](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DistributionConfig.html)
+ [可信签署人](DownloadDistValuesCacheBehavior.md#DownloadDistValuesTrustedSigners)
+ [Smooth Streaming](DownloadDistValuesCacheBehavior.md#DownloadDistValuesSmoothStreaming)
+ [AWS Identity and Access Management（IAM）服务器证书](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html)
+ [专用 IP 地址](cnames-https-dedicated-ip-or-sni.md#cnames-https-dedicated-ip)
+ [最低协议版本 SSLv3](DownloadDistValuesGeneral.md#DownloadDistValues-security-policy)

无法在多租户分配或分配租户中配置以下设置。相反，可以在连接组中设置所需的值。连接组中关联的所有分配租户都将使用这些设置。有关更多信息，请参阅 [创建自定义连接组（可选）](custom-connection-group.md)。
+ [启用 IPv6（查看器请求）](DownloadDistValuesGeneral.md#DownloadDistValuesEnableIPv6)
+ [任播静态 IP 列表](request-static-ips.md)

# 分配租户自定义
<a name="tenant-customization"></a>

使用多租户分配时，分配租户会继承多租户分配配置。但是，可以在分配租户级别自定义某些设置。

可以自定义以下各项：
+ **参数**：参数是可用于源域或源路径的键值对。请参阅[参数如何与分配租户结合使用](#tenant-customize-parameters)。
+ **AWS WAF Web ACL（V2）**：可以为分配租户指定单独的 Web ACL，这将*覆盖*用于多租户分配的 Web ACL。还可以为特定的分配租户禁用此设置，这意味着该分配租户将不会从多租户分配继承 Web ACL 保护。有关更多信息，请参阅 [AWS WAF Web ACL](DownloadDistValuesGeneral.md#DownloadDistValuesWAFWebACL)。
+ **地理限制**：您为分配租户指定的地理限制将*覆盖*多租户分配的任何地理限制。例如，如果您在多租户分配中屏蔽德国（DE），则所有关联的分配租户也将屏蔽 DE。但是，如果您对特定的分配租户支持 DE，则该分配租户设置将覆盖多租户分配的设置。有关更多信息，请参阅 [限制您的内容的地理分配](georestrictions.md)。
+ **失效路径**：为分配租户指定要失效的内容的文件路径。有关更多信息，请参阅 [使文件失效](Invalidation_Requests.md)。
+ **自定义 TLS 证书**：您为分配租户指定的 AWS Certificate Manager（ACM）证书是对多租户分配中提供的证书的补充。但是，如果多租户分配证书和分配租户证书都涵盖同一个域，则使用租户证书。有关更多信息，请参阅 [为 CloudFront 分配租户申请证书](managed-cloudfront-certificates.md)。
+ **域名**：您必须为每个分配租户指定至少一个域名。

## 参数如何与分配租户结合使用
<a name="tenant-customize-parameters"></a>

参数是可用于占位符值的键值对。定义要在多租户分配中使用的参数，并指定它们是否为必需参数。

在多租户分配中定义参数时，您可以选择是否需要在分配租户级别输入这些参数。
+ 如果您在多租户分配中将参数定义为*必需*的参数，则必须在分配租户级别输入这些参数。（不继承这些参数）。
+ 如果参数*不是必需的*，则可以在多租户分配中提供由分配租户继承的默认值。

您可以在以下属性中使用参数：
+ 源域名
+ 源路径

在多租户分配中，最多可以为之前的每个属性定义两个参数。

## 示例参数
<a name="examples-parameters"></a>

请参阅以下示例，了解如何将参数用于域名和源路径。

**域名参数**

在多租户分配配置中，您可以为源域名定义一个参数，如下例所示：

**Amazon S3**
+ `{{parameter1}}.amzn-s3-demo-logging-bucket.s3.us-east-1.amazonaws.com`
+ `{{parameter1}}–amzn-s3-demo-logging-bucket.s3.us-east-1.amazonaws.com`

**自定义源**
+ `{{parameter1}}.lambda-url.us-east-1.on.aws`
+ `{{parameter1}}.mediapackagev2.ap-south-1.amazonaws.com`

创建分配租户时，请指定要用于 `parameter1` 的值。

```
"Parameters": [
  {
    "Name": "parameter1",
    "Value": "mycompany-website"
  }
]
```

使用前面在多租户分配中指定的示例，分配租户的源域名解析为以下内容：
+ `mycompany-website.amzn-s3-demo-bucket3.s3.us-east-1.amazonaws.com`
+ `mycompany-website–amzn-s3-demo-bucket3.s3.us-east-1.amazonaws.com`
+ `mycompany-website.lambda-url.us-east-1.on.aws`
+ `mycompany-website.mediapackagev2.ap-south-1.amazonaws.com`

**源路径参数**

同样，您可以为多租户分配中的源路径定义参数，如下例所示：
+ `/{{parameter2}}`
+ `/{{parameter2}}/test`
+ `/public/{{parameter2}}/test`
+ `/search?name={{parameter2}}`

创建分配租户时，请指定要用于 `parameter2` 的值。

```
"Parameters": [
  {
    "Name": "parameter2",
    "Value": "myBrand"
  }
]
```

使用前面在多租户分配中指定的示例，分配租户的源路径解析为以下内容：
+ `/myBrand`
+ `/myBrand/test`
+ `/public/myBrand/test`
+ `/search?name=myBrand`



**Example 示例**  
您想为客户创建多个网站（租户），并且需要确保每个分配租户资源使用正确的值。  

1. 您可以创建多租户分配，并包含两个用于分配租户配置的参数。

1. 对于源域名，创建一个名为 *customer-name* 的参数并指定该参数为必需的。在 S3 存储桶之前输入该参数，使其显示为：

   `{{customer-name}}.amzn-s3-demo-bucket3.s3.us-east-1.amazonaws.com`.

1. 对于源路径，创建名为 *my-theme* 的第二个参数，并指定它是可选的，默认值为 *basic*。源路径显示为：`/{{my-theme}}`

1. 当您创建分配租户时：
   + 对于域名，您必须为 *customer-name* 指定一个值，因为它在多租户分配中标记为必填项。
   + 对于源路径，您可以选择为 *my-theme* 指定一个值或使用默认值。

# 为 CloudFront 分配租户申请证书
<a name="managed-cloudfront-certificates"></a>

创建分配租户时，该租户从多租户分配继承共享 AWS Certificate Manager（ACM）证书。此共享证书为与多租户分配关联的所有租户提供 HTTPS。

在创建或更新 CloudFront 分配租户以添加域时，可以从 ACM 添加托管式 CloudFront 证书。然后，CloudFront 将代表您从 ACM 获得经 HTTP 验证的证书。可以将此租户级别 ACM 证书用于自定义域配置。CloudFront 简化了续订工作流程，有助于将证书保持为最新状态并确保内容交付不间断。

**注意**  
您拥有证书，但它*只能*与 CloudFront 资源结合使用，并且*无法*导出私有密钥。

可以在创建或更新分配租户时申请证书。

**Topics**
+ [添加域和证书（分配租户）](#vanity-domain-tls-tenant)
+ [完成域设置](#complete-domain-ownership)
+ [将域指向 CloudFront](#point-domains-to-cloudfront)
+ [域注意事项（分配租户）](#tenant-domain-considerations)
+ [通配符域（分配租户）](#tenant-wildcard-domains)

## 添加域和证书（分配租户）
<a name="vanity-domain-tls-tenant"></a>

以下过程演示了如何为分配租户添加域和更新证书。

**添加域和证书（分配租户）**

1. 登录 AWS 管理控制台，并通过以下网址打开 CloudFront 控制台：[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 在 **SaaS** 下，选择**分配租户**。

1. 搜索分配租户。使用搜索栏中的下拉菜单，按域、名称、分配 ID、证书 ID、连接组 ID 或 Web ACL ID 进行筛选。

1. 选择分配租户名称。

1. 对于**域**，选择**管理域**。

1. 对于**证书**，选择是否要为分配租户使用**自定义 TLS 证书**。该证书会验证您是否获得授权可使用该域名。该证书必须存在于美国东部（弗吉尼亚州北部）区域中。

1. 对于**域**，选择**添加域**并输入域名。根据您的域，以下消息将出现在您输入的域名下方。
   + 证书涵盖此域。
   + 证书涵盖此域，等待验证。
   + 证书不涵盖此域。（这意味着您必须验证域所有权。）

1. 选择**更新分配租户**。

   在租户详细信息页面的**域**之下，您可以看到以下字段：
   + **域所有权**：域所有权的状态。在 CloudFront 可以提供内容之前，必须使用 TLS 证书验证来验证域所有权。
   + **DNS 状态**：域的 DNS 记录必须指向 CloudFront，才能正确地路由流量。

1. 如果域所有权未得以验证，请在租户详细信息页面的**域**之下，选择**完成域设置**，然后完成以下过程来将 DNS 记录指向您的 CloudFront 域名。

## 完成域设置
<a name="complete-domain-ownership"></a>

按照这些过程来验证您拥有分配租户的域。根据您的域，选择以下过程之一。

**注意**  
如果域已使用 Amazon Route 53 别名记录指向 CloudFront，则必须在域名前面添加带有 `_cf-challenge.` 的 DNS TXT 记录。此 TXT 记录可验证域名是否已关联到 CloudFront。对每个域重复此步骤。以下内容显示如何更新 TXT 记录：  
记录名称：`_cf-challenge.DomainName`
记录类型：`TXT`
记录值：`CloudFrontRoutingEndpoint`
例如，TXT 记录类似于：`_cf-challenge.example.com TXT d111111abcdef8.cloudfront.net`  
您可以在控制台中的分配租户详细信息页面上找到 CloudFront 路由端点，也可以使用《Amazon CloudFront API Reference》**中的 [ListConnectionGroups](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListConnectionGroups.html) API 操作来找到该端点。

**提示**  
如果您是 SaaS 提供商，并且想要在不要求客户（租户）直接向其 DNS 中添加 TXT 记录的情况下支持证书颁发，请执行以下操作：  
如果您拥有域 `example-saas-provider.com`，请将子域分配给您的租户，例如 `customer-123.example-saas-provider.com`
在 DNS 中，将 `_cf-challenge.customer-123.example-saas-provider.com TXT d111111abcdef8.cloudfront.net` TXT 记录添加到 DNS 配置中。
接下来，您的客户（租户）可以更新其自己的 DNS 记录，以便将其域名映射到您提供的子域。  
`www.customer-domain.com CNAME customer-123.example-saas-provider.com`

------
#### [ I have existing traffic ]

如果域无法容忍停机时间，请选择此选项。您必须有权访问源/Web 服务器。使用以下过程验证域所有权。

**当有现有流量时完成域设置**

1. 对于**指定 Web 流量**，选择**我有现有流量**，然后选择**下一步**。

1. 对于**验证域所有权**，请选择以下选项之一：
   + **使用现有证书**：搜索现有 ACM 证书，或输入涵盖所列域的证书 ARN。
   + **手动上传文件**：选择您是否拥有将文件上传到 Web 服务器的直接访问权限。

     对于每个域，创建一个纯文本文件（其中包含来自**令牌位置**的验证令牌），然后将其上传到位于现有服务器上指定**文件路径**处的源。此文件的路径可能如以下示例所示：`/.well-known/pki-validation/acm_9c2a7b2ec0524d09fa6013efb73ad123.txt`。完成该步骤后，ACM 会验证令牌，然后为该域颁发 TLS 证书。
   + **HTTP 重定向**：如果您不具有将文件上传到 Web 服务器的直接访问权限，或者您正在使用 CDN 或代理服务，请选择此选项。

     对于每个域，在现有服务器上创建 301 重定向。复制**重定向自**下的已知路径，并指向**重定向至**下的指定证书端点。重定向可能类似于以下示例：

     ```
     If the URL matches: example.com/.well-known/pki-validation/leabe938a4fe077b31e1ff62b781c123.txt
     Then the settings are:Forwarding URL
     Then 301 Permanent Redirect:To validation.us-east-1.acm-validations.aws/123456789012/.well-known/pki-validation/leabe938a4fe077b31e1ff62b781c123.txt
     ```
**注意**  
可以选择**检查证书状态**来验证 ACM 何时为该域颁发证书。

1. 选择**下一步**。

1. 完成[将域指向 CloudFront](#point-domains-to-cloudfront) 的步骤。

------
#### [ I don't have traffic ]

如果您要添加新域，请选择此选项。CloudFront 将为您管理证书验证。

**在没有流量的情况下完成域设置**

1. 在**指定 Web 流量**中，选择**我还没有流量**。

1. 对于每个域名，请完成[将域指向 CloudFront](#point-domains-to-cloudfront) 的步骤。

1. 在更新每个域名的 DNS 记录后，选择**下一步**。

1. 等待颁发证书。
**注意**  
可以选择**检查证书状态**来验证 ACM 何时为该域颁发证书。

1. 选择**提交**。

------

## 将域指向 CloudFront
<a name="point-domains-to-cloudfront"></a>

更新您的 DNS 记录，以便将来自每个域的流量路由到 CloudFront 路由端点。您可以有多个域名，但它们必须全部解析到此端点。

**将域指向 CloudFront**

1. 复制 CloudFront 路由端点值，例如 d111111abcdef8.cloudfront.net。

1. 更新您的 DNS 记录，以便将来自每个域的流量路由到 CloudFront 路由端点。

   1. 登录到域注册商或 DNS 提供商管理控制台。

   1. 导航到域的 DNS 管理部分。
      + **对于子域**：创建 CNAME 记录。例如：
        + **名称**：子域（例如 `www` 或 `app`）
        + **值/目标**：CloudFront 路由端点
        + **记录类型**：CNAME
        + **TTL**：3600（或任何适合用例的值）
      + **对于顶级域/根域**：这需要唯一的 DNS 配置，因为不能在根域或顶级域级别使用标准 CNAME 记录。由于大多数 DNS 提供商不支持 ALIAS 记录，因此建议在 Route 53 中创建 ALIAS 记录。例如：
        + **名称**：顶级域（例如 `example.com`）
        + **记录类型**：A
        + **别名**：是
        + **别名目标**：CloudFront 路由端点
        + **路由策略**：简单（或任何适合用例的策略）

   1. 验证 DNS 更改是否已传播。（这通常在 TTL 过期时发生。有时可能需要 24-48 小时。） 使用 `dig` 或 `nslookup` 之类的工具。

      ```
      dig www.example.com
      # Should eventually return a CNAME pointing to your CloudFront routing endpoint
      ```

1. 返回 CloudFront 控制台并选择**提交**。当域处于活动状态时，CloudFront 会更新域状态，以表明域已准备好提供流量。

有关更多信息，请参阅 DNS 提供商的文档：
+ [Cloudflare](https://developers.cloudflare.com/dns/manage-dns-records/how-to/create-dns-records/)
+ [ClouDNS](https://www.cloudns.net/wiki/article/9/)
+ [DNSimple](https://support.dnsimple.com/categories/dns/)
+ [Gandi.net](https://www.gandi.net/)
+ [GoDaddy](https://www.godaddy.com/help/manage-dns-records-680)
+ [Google Cloud DNS](https://cloud.google.com/dns/docs/records)
+ [Namecheap](https://www.namecheap.com/support/knowledgebase/article.aspx/767/10/how-to-change-dns-for-a-domain/)

## 域注意事项（分配租户）
<a name="tenant-domain-considerations"></a>

当域处于活动状态时，域控制已建立，CloudFront 将响应查看器对该域的所有请求。一旦激活，域就无法停用或更改为非活动状态。当域已在使用中时，该域无法与其它 CloudFront 资源关联。要将该域与其它分配相关联，请使用 [UpdateDomainAssociation](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDomainAssociation.html) 请求将该域从一个 CloudFront 资源移到另一个 CloudFront 资源。

当域处于非活动状态时，CloudFront 将不会响应查看器对该域的请求。当域处于非活动状态时，请注意以下情况：
+ 如果您有待处理的证书请求，CloudFront 将响应对已知路径的请求。当请求处于待处理状态时，域无法与任何其它 CloudFront 资源关联。
+ 如果您没有待处理的证书请求，CloudFront 将不会响应对该域的请求。可以将该域与其它 CloudFront 资源相关联。
+ 对于每个分配租户，您只能有*一个待处理的证书请求*。您必须先取消现有待处理的请求，然后才能为其它域请求另一个证书。取消现有证书请求不会删除关联的 ACM 证书。可以使用 ACM API 将其删除。
+ 如果您将新证书应用于分配租户，这将取消与先前证书的关联。可以重用该证书来涵盖其它分配租户的域。

与续订经 DNS 验证的证书一样，当证书续订成功时，您会收到通知。然而，您不需要做任何其它事情。CloudFront 将自动管理域的证书续订。

**注意**  
您无需调用 ACM API 操作，即可创建或更新证书资源。您可以通过使用 [CreateDistributionTenant](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistributionTenant.html) 和 [UpdateDistributionTenant](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistributionTenant.html) API 操作来管理证书，以便为托管式证书请求指定详细信息。

## 通配符域（分配租户）
<a name="tenant-wildcard-domains"></a>

在以下情况下，分配租户支持通配符域：
+ 当通配符包含在从父多租户分配继承的共享证书中时
+ 当您为分配租户使用有效的现有自定义 TLS 证书时

# 创建自定义连接组（可选）
<a name="custom-connection-group"></a>

默认情况下，当您创建多租户分配时，CloudFront 会为您创建一个连接组。连接组控制着查看器对内容的请求如何连接到 CloudFront。

我们建议您使用默认连接组。但是，如果您需要隔离企业应用程序或单独管理分配租户组，则可以选择创建自定义连接组。例如，如果分配租户遭受 DDoS 攻击，您可能需要将其移至单独的连接组。这样就可以保护其它分配租户免受影响。

## 创建自定义连接组（可选）
<a name="create-connection-group"></a>

或者，您可以选择为分配租户创建自定义连接组。

**创建自定义连接组（可选）**

1. 登录 AWS 管理控制台，并通过以下网址打开 CloudFront 控制台：[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 在导航窗格中，选择**设置**。

1. 开启**连接组**设置。

1. 在导航窗格中，选择**连接组**，然后选择**创建连接组**。

1. 对于**连接组名称**，输入连接组的名称。创建连接组后，您将无法更新此名称。

1. 对于 **IPv6**，请指定是否要启用此 IP 协议。有关更多信息，请参阅 [启用 IPv6（查看器请求）](DownloadDistValuesGeneral.md#DownloadDistValuesEnableIPv6)。

1. 对于**任播静态 IP 列表**，请指定是否要从一组 IP 地址向分配租户传送流量。有关更多信息，请参阅[任播静态 IP 列表](request-static-ips.md)。

1. （可选）向连接组添加标签。

1. 选择**创建连接组**。

创建连接组后，您可以找到您指定的设置以及 ARN 和端点。
+ ARN 类似于以下示例：`arn:aws:cloudfront::123456789012:connection-group/cg_2uVbA9KeWaADTbKzhj9lcKDoM25`
+ 端点类似于以下示例：d111111abcdef8.cloudfront.net

创建自定义连接组后，可以对其进行编辑或将其删除。在删除连接组之前，必须先从中删除所有关联的分配租户。您无法删除您在创建多租户分配时 CloudFront 为您创建的默认连接组。

**重要**  
如果您更改分配租户的连接组，CloudFront 将继续为该分配租户传输流量，但会增加延迟。我们建议您更新分配租户的 DNS 记录，以使用来自新连接组的 CloudFront 路由端点。  
在您更新 DNS 记录之前，CloudFront 将根据为网站当前通过 DNS 指向的路由端点所定义的设置进行路由。例如，假设默认连接组不使用任播静态 IP，但新的自定义连接组使用它们。您必须先更新 DNS 记录，然后 CloudFront 才会对自定义连接组中的分配租户使用任播静态 IP。

# 迁移到多租户分配
<a name="template-migrate-distribution"></a>

如果您有 CloudFront 标准分配，并且想要迁移到多租户分配，请按照以下步骤操作。

**从标准分配迁移到多租户分配**

1. 查看[不支持的功能](distribution-config-options.md#unsupported-saas)。

1. 使用与标准分配相同的配置（减去不支持的功能）创建多租户分配。有关更多信息，请参阅 [在控制台中创建 CloudFront 分配](distribution-web-creating-console.md#create-console-distribution)。

1. 创建分配租户并添加您拥有的备用域名。
**警告**  
请*勿*使用与标准分配关联的当前域名。而是添加占位符域。稍后，您将移动您的域名。有关创建分配租户的更多信息，请参阅[在控制台中创建 CloudFront 分配](distribution-web-creating-console.md#create-console-distribution)。

1. 为分配租户域提供现有证书。该证书将涵盖占位符域和您要移动的域。

1. 从控制台中的分配租户详细信息页面复制 CloudFront 路由端点。或者，也可以使用《Amazon CloudFront API Reference》**中的 [ListConnectionGroups](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListConnectionGroups.html) API 操作进行查找。

1. 要验证域所有权，请创建一条带有下划线（\$1）前缀的 DCV TXT 记录，该记录指向分配租户的 CloudFront 路由端点。有关更多信息，请参阅 [将域指向 CloudFront](managed-cloudfront-certificates.md#point-domains-to-cloudfront)。

1. 当您的更改传播完毕后，请更新分配租户，以使用之前用于标准分配的域。
   + **控制台**：有关详细说明，请参阅[添加域和证书（分配租户）](managed-cloudfront-certificates.md#vanity-domain-tls-tenant)。
   + **API**：使用《Amazon CloudFront API Reference》**中的 [UpdateDomainAssociation](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDomainAssociation.html) API 操作。
**重要**  
这将重置内容的缓存密钥。之后，CloudFront 开始使用新的缓存密钥缓存您的内容。有关更多信息，请参阅 [了解缓存键](understanding-the-cache-key.md)。

1. 更新 DNS 记录，以便将域指向分配租户的 CloudFront 路由端点。完成此步骤后，域就准备就绪，可以为分配租户提供流量了。有关更多信息，请参阅 [将域指向 CloudFront](managed-cloudfront-certificates.md#point-domains-to-cloudfront)。

1. （可选）在成功将域迁移到分配租户后，可以使用另一个 CloudFront 托管式证书，该证书涵盖分配租户的域名。要请求托管式证书，请创建单独的 TXT 记录来颁发证书，然后按照[完成域设置](managed-cloudfront-certificates.md#complete-domain-ownership)中的步骤操作。