在自定义组件文档中使用变量 - EC2Image Builder

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

在自定义组件文档中使用变量

变量提供了一种以在整个应用程序中可使用的有意义的名称来标记数据的方法。您可以为复杂的工作流程定义格式简单易读的自定义变量,并在组件的YAML应用程序组件文档中引用它们。 AWSTOE

本节提供的信息可帮助您在YAML应用程序组件文档中为 AWSTOE 组件定义变量,包括语法、名称约束和示例。

参数

参数是可变变量,其设置由调用应用程序在运行时提供。您可以在YAML文档的Parameters章节中定义参数。

参数名称规则
  • 名称长度必须介于 3 到 128 个字符之间。

  • 该名称只能包含字母/数字字符(a-z、A-Z、0-9)、短划线 (-) 或下划线 (_)。

  • 在文档内,此名称必须是唯一的。

  • 必须将名称指定为字符YAML串。

语法

parameters: - <name>: type: <parameter type> default: <parameter value> description: <parameter description>

键名称

必需

描述

name

参数的名称。文档必须是唯一的(不得与任何其他参数名称或常量相同)。

type

参数的数据类型。支持的类型包括:string

default

参数的默认值。

description

描述参数。

在文档中引用参数值

可以在YAML文档内部的步进或循环输入中引用参数,如下所示:

  • 参数引用区分大小写,并且名称必须完全匹配。

  • 名称必须用双大括号括起来 {{ MyParameter }}.

  • 允许在花括号内留出空格,并且会自动修剪空格。例如,以下所有引用均有效:

    {{ MyParameter }}, {{ MyParameter}}, {{MyParameter }}, {{MyParameter}}

  • YAML文档中的引用必须指定为字符串(用单引号或双引号括起来)。

    例如:- {{ MyParameter }} 无效,因为它未被标识为字符串。

    但是,以下引用均有效:- '{{ MyParameter }}'- "{{ MyParameter }}"

示例

以下示例说明如何在YAML文档中使用参数:

  • 参考步骤输入中的参数:

    name: Download AWS CLI version 2 schemaVersion: 1.0 parameters: - Source: type: string default: 'https://awscli.amazonaws.com/AWSCLIV2.msi' description: The AWS CLI installer source URL. phases: - name: build steps: - name: Download action: WebDownload inputs: - source: '{{ Source }}' destination: 'C:\Windows\Temp\AWSCLIV2.msi'
  • 参考循环输入中的参数:

    name: PingHosts schemaVersion: 1.0 parameters: - Hosts: type: string default: 127.0.0.1,amazon.com description: A comma separated list of hosts to ping. phases: - name: build steps: - name: Ping action: ExecuteBash loop: forEach: list: '{{ Hosts }}' delimiter: ',' inputs: commands: - ping -c 4 {{ loop.value }}

在运行时覆盖参数

您可以使用 AWS CLI 带有键值对的--parameters选项在运行时设置参数值。

  • 将参数键值对指定为名称和值,用等号 (=) 分隔 (<name>=<value>)。

  • 多个参数必须用逗号分隔。

  • 在YAML组件文档中找不到的参数名称将被忽略。

  • 参数名称和值都是必需的。

重要

组件参数是纯文本值,并且已记录在 AWS CloudTrail中。我们建议您使用 AWS Secrets Manager 或 P AWS Systems Manager arameter Store 来存储您的密钥。有关 Secrets Manager 的更多信息,请参阅AWS Secrets Manager 用户指南中的什么是 Secrets Manager?。有关 AWS Systems Manager Parameter Store 的更多信息,请参阅 AWS Systems Manager 用户指南中的 AWS Systems Manager Parameter Store

语法

--parameters name1=value1,name2=value2...

CLI选项

必需

描述

--parameters name=value,...

此选项采用键/值对列表,以参数名称为键。

示例

以下示例说明如何在YAML文档中使用参数:

  • --parameter 选项中指定的参数键值对无效:

    --parameters ntp-server=
  • 使用 AWS CLI中的 --parameter 选项设置一个参数键值对:

    --parameters ntp-server=ntp-server-windows-qe.us-east1.amazon.com
  • 使用 AWS CLI中的 --parameter 选项设置多个参数键值对:

    --parameters ntp-server=ntp-server.amazon.com,http-url=https://internal-us-east1.amazon.com

常量

常量是不可变的变量,一旦定义就无法修改或覆盖。常量可以使用 AWSTOE 文档constants部分中的值来定义。

常量名称规则
  • 名称长度必须介于 3 到 128 个字符之间。

  • 该名称只能包含字母/数字字符(a-z、A-Z、0-9)、短划线 (-) 或下划线 (_)。

  • 在文档内,此名称必须是唯一的。

  • 必须将名称指定为字符YAML串。

语法

constants: - <name>: type: <constant type> value: <constant value>
键名称 必需 描述

name

常量的名称。文档必须是唯一的(不得与任何其他参数名称或常量相同)。

value

常量的值。

type

常量的类型。支持的类型为 string
在文档中引用常量值

可以在YAML文档内部的步进或循环输入中引用常量,如下所示:

  • 常量引用区分大小写,并且名称必须完全匹配。

  • 名称必须用双大括号括起来 {{ MyConstant }}.

  • 允许在花括号内留出空格,并且会自动修剪空格。例如,以下所有引用均有效:

    {{ MyConstant }}, {{ MyConstant}}, {{MyConstant }}, {{MyConstant}}

  • YAML文档中的引用必须指定为字符串(用单引号或双引号括起来)。

    例如:- {{ MyConstant }} 无效,因为它未被标识为字符串。

    但是,以下引用均有效:- '{{ MyConstant }}'- "{{ MyConstant }}"

示例

步骤输入中引用的常量

name: Download AWS CLI version 2 schemaVersion: 1.0 constants: - Source: type: string value: https://awscli.amazonaws.com/AWSCLIV2.msi phases: - name: build steps: - name: Download action: WebDownload inputs: - source: '{{ Source }}' destination: 'C:\Windows\Temp\AWSCLIV2.msi'

循环输入中引用的常量

name: PingHosts schemaVersion: 1.0 constants: - Hosts: type: string value: 127.0.0.1,amazon.com phases: - name: build steps: - name: Ping action: ExecuteBash loop: forEach: list: '{{ Hosts }}' delimiter: ',' inputs: commands: - ping -c 4 {{ loop.value }}