

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

# 支持模块化和代码重复使用
<a name="reuse"></a>

您可以从许多不同的 AWS 资源甚至其他产品中组装产品。理想情况下，您可以采用模块化方式定义资源，以便可以在多个产品中重复使用它们。资源级重复使用使您能够在一个地方进行任何未来更改，而不是在使用该资源类型的每个产品中进行更改。

Service Catalog 提供了一项称为*链接*的功能，以支持产品级别的可重用性。您可以将产品链接到一个或多个其他产品。例如，您可能希望将 S3 日志存储桶产品链接到更高级别的监控产品。虽然链接支持模块化，但它会带来一些操作复杂性，因为您必须管理依赖关系。Service Catalog 不会自动维护链式产品之间的版本控制，因此无法确保对一个产品的更改不会破坏依赖于它的其他产品。谨慎使用链接，并开发自己的机制来确保版本控制和维护依赖关系。

Serv CloudFormation ice Catalog 使用本机方式将产品配置模板部署为 CloudFormation堆栈。但是，Service Catalog 对产品堆栈的 CloudFormation 部署施加了一些限制。特别是，Service Catalog 配置不支持用于插入可重复使用的脚本段或将嵌套 CloudFormation 脚本（或堆栈）引用到多个级别的 CloudFormation `include`宏。这些 Service Catalog 限制限制了根据可重复使用的 CloudFormation 模板或组件定义产品的能力，这是您在本地定义堆栈时的标准最佳做法。 CloudFormation

**注意**  
Service Catalog 允许您使用使用这些 CloudFormation 结构的配置模板成功定义产品。但是，如果您在 Service Catalog CloudFormation 模板中使用`include`宏或嵌套多个级别的脚本，则会遇到配置时间错误。

这些限制可能会使在 Service Catalog 中实现模块化和可重复使用的产品变得困难。如果需要模块化，您可以探索[使用 AWS CDK](options.md#cdk) 来实现您的产品及其预调配模板，或者使用 [AWS Labs Service Catalog Tools 项目](service-catalog-tools.md)中的预调配工作流程和引擎。本指南的后续部分中描述了这两种替代方案。