

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

# 社区模块的最佳实践
<a name="community"></a>

有效使用模块是管理复杂的 Terraform 配置和促进重复使用的关键。本节提供了有关社区模块、依赖关系、来源、抽象和贡献的最佳实践。

**Topics**
+ [探索社区模块](#discovery)
+ [了解依赖关系](#dependencies)
+ [使用可信来源](#trusted-sources)
+ [为社区模块做出贡献](#contribute-community)

## 探索社区模块
<a name="discovery"></a>

在构建新模块之前 [GitHub](https://github.com/terraform-aws-modules)，请在 [Terraform Re](https://registry.terraform.io/namespaces/terraform-aws-modules) gistry 和其他来源中搜索可能解决您的用例的现有 AWS 模块。寻找具有最新更新且正在积极维护的热门选项。

### 使用变量进行自定义
<a name="customization"></a>

使用社区模块时，请通过变量传递输入，而不是分叉或直接修改源代码。在需要时覆盖默认值，而不是更改模块的内部结构。

Forking 应仅限于为原始模块提供修复或功能，以使更广泛的社区受益。

## 了解依赖关系
<a name="dependencies"></a>

在使用该模块之前，请查看其源代码和文档以确定依赖关系：
+ **必需的提供程序**：请注意模块所需的版本 AWS、Kubernetes 或其他提供程序。
+ **嵌套模块**：检查内部使用的其他引入级联依赖关系的模块。
+ **外部数据源**：记下模块所依赖的 API、自定义插件或基础架构依赖关系。

通过绘制直接和间接依赖关系的完整树，可以在使用该模块时避免意外。

## 使用可信来源
<a name="trusted-sources"></a>

从未经验证或未知的发行商那里采购 Terraform 模块会带来重大风险。仅使用来自可信来源的模块。
+ 优先选择来自 [Terraform Re](https://registry.terraform.io/namespaces/terraform-aws-modules) gistry 的认证模块，这些模块由经过验证的创作者（例如 AWS 或 HashiCorp 合作伙伴）发布。
+ 对于自定义模块，请查看发布者历史记录、支持级别和使用声誉，即使该模块来自您自己的组织。

通过不允许使用来自未知或未经审查的来源的模块，可以降低在代码中注入漏洞或维护问题的风险。

### 订阅 通知
<a name="subscribe"></a>

订阅来自值得信赖的发行商发布的新模块的通知：
+ 查看 GitHub 模块存储库以获取有关该模块新版本的警报。
+ 监控发布商博客和变更日志以获取更新。
+ 从经过验证的、高度评价的来源获取有关新版本的主动通知，而不是隐含地获取更新。

仅使用来自可信来源的模块并监控更改可提供稳定性和安全性。经过审查的模块可提高生产力，同时最大限度地降低供应链风险。

## 为社区模块做出贡献
<a name="contribute-community"></a>

提交托管在以下位置的社区模块的修复和增强功能 GitHub：
+ 在模块上打开拉取请求，以解决您在使用中遇到的缺陷或限制。
+ 通过创建问题，请求将新的最佳实践配置添加到现有 OSS 模块中。

为社区模块做出贡献可以增强所有 Terraform 从业者的可重复使用的编纂模式。