在中定义和引用变量 EC2 TOE - EC2 Image Builder
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在中定义和引用变量 EC2 TOE

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

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

参数

参数是可变变量,其设置由调用应用程序在运行时提供。您可以在 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 }}

在运行时覆盖参数

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

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

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

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

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

重要

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

语法

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

CLI 选项

必需

描述

--参数名称=,...

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

示例

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

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

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

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

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

常量

常量是不可变的变量,一旦定义就无法修改或覆盖。常量可以使用 EC2 TOE 文档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 Amazon 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 }}