

终止支持通知：2026 年 10 月 7 日， AWS 将终止对的支持。 AWS Proton 2026 年 10 月 7 日之后，您将无法再访问 AWS Proton 控制台或 AWS Proton 资源。您部署的基础架构将保持不变。有关更多信息，请参阅《[AWS Proton 服务弃用和迁移指南》](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html)。

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

# 组件基础设施即代码文件
<a name="ag-components-iac"></a>

组件基础设施即代码 (IaC) 文件与其他 AWS Proton 资源的文件类似。可以在此处了解一些组件特定的详细信息。有关为创作 IaC 文件的完整信息 AWS Proton，请参阅。[为创作模板和创建捆绑包 AWS Proton](ag-template-authoring.md)

## 将参数与组件一起使用
<a name="ag-components-iac.namespace"></a>

 AWS Proton 参数命名空间包括一些参数，服务 IaC 文件可以引用这些参数来获取关联组件的名称和输出。命名空间还包含一些参数，组件 IaC 文件可以引用这些参数以从与组件关联的环境、服务和服务实例中获取输入、输出和资源值。

组件没有自己的输入，它从附加到的服务实例中获取输入。组件也可以读取环境输出。

有关在组件和关联的服务 IaC 文件中使用参数的更多信息，请参阅[组件 CloudFormation IaC 文件参数详细信息和示例](comp-parameters.md)。有关 AWS Proton 参数的一般信息以及参数命名空间的完整参考，请参见[AWS Proton 参数](parameters.md)。

## 编写强大的 IaC 文件
<a name="ag-components-iac.robust"></a>

作为管理员，在创建服务模板版本时，您可以决定是否要允许通过模板版本创建的服务实例具有附加的组件。请参阅《[CreateServiceTemplateVersion](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html)API *参考》中的AWS Proton API* 操作[supportedComponentSources](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html#proton-CreateServiceTemplateVersion-request-supportedComponentSources)参数。不过，对于任何将来的服务实例，创建实例、决定是否将组件附加到服务实例以及（对于直接定义的组件）编写组件 IaC 的人通常是不同的人 - 使用您的服务模板的开发人员。因此，您无法保证组件将附加到服务实例。您也无法保证特定组件输出名称是否存在，或者这些输出的值是否有效和安全。

AWS Proton 而且 Jinja 语法可以帮助你解决这些问题，并编写强大的服务模板，这些模板可以通过以下方式顺利呈现：
+ *AWS Proton 参数过滤器*-在引用组件输出属性时，可以使用*参数过滤器，即验证、筛选*和格式化参数值的修饰符。有关更多信息以及示例，请参阅 [CloudFormation IaC 文件的参数过滤器](parameter-filters.md)。
+ *单个属性默认值* - 在引用组件的单个资源或输出属性时，您可以使用 `default` 筛选条件（具有或没有默认值）保证服务模板渲染不会失败。如果您引用的组件或特定输出参数不存在，则渲染默认值或空字符串（如果未指定默认值），并且渲染成功。有关更多信息，请参阅 [为不存在的引用提供默认值](parameter-filters.md#parameter-filters.proton.default)。

  示例：
  + `{{ service_instance.components.default.name | default("") }}`
  + `{{ service_instance.components.default.outputs.my-output | default("17") }}`
**注意**  
不要将命名空间的 `.default` 部分（指定直接定义的组件）与 `default` 筛选条件混淆，该筛选条件在引用的属性不存在时提供默认值。
+ *整个对象引用* - 在您引用整个组件或组件的输出集合时， AWS Proton 返回一个空对象 (`{}`)，因此保证渲染服务模板不会失败。您不必使用任何筛选条件。请务必在可以使用空对象的上下文中进行引用，或使用 `{{ if .. }}` 条件测试空对象。

  示例：
  + `{{ service_instance.components.default }}`
  + `{{ service_instance.components.default.outputs }}`