本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
组件基础设施即代码文件
组件基础设施即代码 (IaC) 文件与其他 AWS Proton 资源的 IaC 文件类似。可以在此处了解一些组件特定的详细信息。有关为 AWS Proton 编写 IaC 文件的完整信息,请参阅为创作模板和创建捆绑包 AWS Proton。
将参数与组件一起使用
AWS Proton 参数命名空间包含一些参数,服务 IaC 文件可以引用这些参数以获取关联组件的名称和输出。命名空间还包含一些参数,组件 IaC 文件可以引用这些参数以从与组件关联的环境、服务和服务实例中获取输入、输出和资源值。
组件没有自己的输入,它从附加到的服务实例中获取输入。组件也可以读取环境输出。
有关在组件和关联的服务 IaC 文件中使用参数的更多信息,请参阅组件 CloudFormation IaC 文件参数详细信息和示例。有关 AWS Proton 参数的一般信息以及参数命名空间的完整参考,请参阅AWS Proton 参数。
编写强大的 IaC 文件
作为管理员,在创建服务模板版本时,您可以决定是否要允许通过模板版本创建的服务实例具有附加的组件。请参阅 AWS Proton API Reference 中的 CreateServiceTemplateVersion API 操作的 supportedComponentSources 参数。不过,对于任何将来的服务实例,创建实例、决定是否将组件附加到服务实例以及(对于直接定义的组件)编写组件 IaC 的人通常是不同的人 - 使用您的服务模板的开发人员。因此,您无法保证组件将附加到服务实例。您也无法保证特定组件输出名称是否存在,或者这些输出的值是否有效和安全。
AWS Proton 和 Jinja 语法可以帮助您解决这些问题并编写强大的服务模板,这些模板可以通过以下方式渲染而不会失败:
-
AWS Proton 参数筛选条件 - 在引用组件输出属性时,您可以使用参数筛选条件 - 验证和筛选参数值以及设置参数值格式的修饰符。有关更多信息以及示例,请参阅 CloudFormation IaC 文件的参数过滤器。
-
单个属性默认值 - 在引用组件的单个资源或输出属性时,您可以使用
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 }}
-