

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon Service Catalog 模板约束
<a name="catalogs_constraints_template-constraints"></a>

**注意**  
Amazon Service Catalog 不支持 Terraform 开源或 Terraform Cloud 产品的模板限制。

要限制最终用户在启动产品时可用的选项，请应用模板约束。应用模板约束可确保最终用户可在不违反组织的合规性要求的情况下使用产品。您可以将模板约束应用于产品 Amazon Service Catalog 组合中的产品。产品组合必须先包含一个或多个产品，然后才能定义模板约束。

模板约束由一个或多个规则组成，这些规则缩小了在产品基础 Amazon CloudFormation 模板中定义的参数的允许值。 Amazon CloudFormation 模板中的参数定义用户在创建堆栈时指定的值的集合。例如，参数可以定义用户在启动包含实例的堆栈时可以选择的各种 EC2 实例类型。

如果模板中的参数值集对于产品组合的目标受众来说太广泛，则可定义模板约束来限制用户在启动产品时可选择的值。例如，如果模板参数包含的 EC2 实例类型对于仅应使用小实例类型（例如`t2.micro`或`t2.small`）的用户来说太大，则可以添加模板约束来限制最终用户可以选择的实例类型。有关 Amazon CloudFormation 模板参数的更多信息，请参阅《*Amazon CloudFormation 用户指南*》中的[参数](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html)。

模板约束绑定于产品组合内。如果将模板约束应用于一个产品组合的某个产品，然后您将此产品包含在另一个产品组合中，则这些约束将不会应用于第二个产品组合的此产品。

如果将模板约束应用于已与用户共享的产品，则约束会立即应用到随后启动的所有产品和产品组合中所有版本的产品。

您可以使用规则编辑器或在 Amazon Service Catalog 管理员控制台中将规则写成 JSON 文本来定义模板约束规则。有关规则的更多信息（包括语法和示例），请参阅[模板约束规则](reference-template_constraint_rules.md)。

要在将约束发布给用户前对其进行测试，请创建包含相同产品的测试产品组合，并使用该产品组合测试约束。

**将模板约束应用于产品**

1. 打开 Service Catalog 控制台，网址为[https://console.aws.amazon.com/servicecatalog/](https://console.amazonaws.cn/servicecatalog/)。

1. 在**产品组合**页面，选择包含要将模板约束应用于其上的产品的产品组合。

1. 展开**约束**部分并选择**添加约束**。

1. 在**选择产品和类型**窗口中，对于**产品**，选择您要定义模板约束的产品。然后，对于**约束类型**项，选择**模板**。选择**继续**。

1. 在**模板约束生成器**页面，使用 JSON 编辑器或规则生成器界面来编辑约束规则。
   + 要编辑规则的 JSON 代码，请选择**约束文本编辑器**选项卡。此选项卡上提供了多个示例来帮助您开始操作。

     要使用规则生成器界面构建规则，请选择**规则生成器**选项卡。在此选项卡上，您可以选择产品的模板中指定的任何参数，并可以为该参数指定允许值。根据参数的类型，可通过选择清单中的项目、指定数量或指定逗号分隔列表中的一组值来指定允许值。

     在构建完规则后，选择**添加规则**。规则会显示在**规则生成器**选项卡上的表中。要查看和编辑 JSON 输出，请选择**约束文本编辑器**选项卡。

1. 在编辑完约束的规则后，选择**提交**。要查看约束，请转到产品组合详细信息页，然后展开**约束**。