创建YAML工作流程文档 - EC2Image Builder

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

创建YAML工作流程文档

YAML格式定义文档为映像构建过程的构建和测试阶段配置输入、输出和工作流程步骤。您可以从包含标准化步骤的模板开始,也可以从头开始定义自己的工作流。无论您使用模板还是从头开始,都可以自定义工作流以满足您的需求。

YAML工作流程文档的结构

Image Builder 用于执行映像构建和测试操作YAML的工作流程文档结构如下。

工作流程文档识别

对工作流进行唯一标识。此部分可以包含以下属性。

字段

描述

类型

必需

name

工作流文档名称。

String

description

文档描述。

String

schemaVersion

文档架构版本,当前为 1.0。

String

示例

--- name: sample-test-image description: Workflow for a sample image, with extra configuration options exposed through workflow parameters. schemaVersion: 1.0

工作流程文档输入参数

工作流文档的这一部分定义了调用方可以指定的输入参数。如果您没有任何参数,则可以省略此部分。如果您确实指定了参数,则每个参数可以包含以下属性。

字段

描述

类型

必需

约束

name

参数的名称。

String

description

参数描述。

String

默认值

如果未提供值,则为该参数的默认值。如果参数定义中未包含默认值,则运行时需要该参数值。

匹配参数数据类型。

type

参数的数据类型。如果参数定义中未包含数据类型,则参数类型默认为运行时所需的字符串值。

String

参数的数据类型必须为以下类型之一:

  • string

  • integer

  • boolean

  • stringList

示例

在工作流文档中指定参数。

parameters: - name: waitForActionAtEnd type: boolean default: true description: "Wait for an external action at the end of the workflow"

在工作流文档中使用参数值。

$.parameters.waitForActionAtEnd

工作流程文档步骤

为工作流指定最多 15 个步骤操作。步骤按照工作流文档中定义的顺序运行。如果失败,将按相反的顺序运行回滚,从失败的步骤开始,然后反向执行之前的步骤。

每个步骤都可以引用任何先前步骤操作的输出。这称为链接或引用。要引用前一步操作的输出,可以使用JSONPath选择器。例如:

$.stepOutputs.step-name.output-name

有关更多信息,请参阅 在工作流文档中使用动态变量

注意

尽管步骤本身并没有输出属性,但步骤操作的任何输出都包含在该步骤的 stepOutput 中。

每个步骤都可以包含以下属性。

字段

描述

类型

必需

默认值

约束

action

此步骤执行的工作流操作。

String

必须是 Image Builder 工作流文档支持的步骤操作。

if,后跟一组修改 if 运算符的条件语句。

条件语句将控制决策点流程添加到工作流步骤的主体中。

字典

Image Builder 支持以下条件语句作为 if 运算符的修饰符:

  • 分支条件和修饰符:ifandornot。分支条件在某一行上自行指定。

  • 比较运算符:booleanEqualsnumberEqualsnumberGreaterThannumberGreaterThanEqualsnumberLessThannumberLessThanEqualsstringEquals

description

步骤描述。

String

不允许使用空字符串。如果包含,长度必须为 1-1024 个字符。

inputs

包含步骤操作运行所需的参数。您可以将键值指定为静态值,也可以使用可解析为正确数据类型的JSONPath变量来指定。

字典

name

步骤的名称。在工作流文档内,此名称必须具有唯一性。

String

长度必须介于 3-128 个字符之间。

可以包含字母数字字符和 _。不能包含空格。

onFailure

配置步骤失败时要执行的操作,如下所示。

行为
  • Abort – 步骤失败,工作流失败,并且在失败的步骤之后不运行任何其余步骤。如果启用了回滚,则从失败的步骤开始回滚,一直持续到允许回滚的所有步骤都回滚为止。

  • Continue – 步骤失败,但在失败的步骤之后继续运行其余步骤。在这种情况下,不会进行回滚。

String

Abort

Abort | Continue

rollbackEnabled

配置发生故障时是否回滚该步骤。您可以使用静态布尔值或解析为布尔值的动态JSONPath变量。

布尔值

true

true | false

| 或者解析为真或假的JSONPath变量。

timeoutSeconds

在失败和重试(如果重试适用)之前步骤运行的最长时间(以秒为单位)。

整数

取决于为步骤操作定义的默认值(如果适用)。

时间介于 1-86400 秒之间(最长 24 小时)

示例

steps: - name: LaunchTestInstance action: LaunchInstance onFailure: Abort inputs: waitFor: "ssmAgent" - name: ApplyTestComponents action: ExecuteComponents onFailure: Abort inputs: instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId" - name: TerminateTestInstance action: TerminateInstance onFailure: Continue inputs: instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId" - name: WaitForActionAtEnd action: WaitForAction if: booleanEquals: true value: "$.parameters.waitForActionAtEnd"

工作流程文档输出

定义工作流的输出。每个输出都是一个键值对,可指定输出的名称和值。您可以使用输出在运行时导出后续工作流可以使用的数据。此部分是可选的。

您定义的每个输出都包含以下属性。

字段

描述

类型

必需

name

输出的名称。此名称在管道包含的工作流中必须具有唯一性。

String

value

输出的值。字符串的值可以是动态变量,例如步骤操作的输出文件。有关更多信息,请参阅 在工作流文档中使用动态变量

String

示例

使用 createProdImage 步骤的步骤输出为工作流文档创建输出映像 ID。

outputs: - name: 'outputImageId' value: '$.stepOutputs.createProdImage.imageId'

请参阅下一个工作流中的工作流输出。

$.workflowOutputs.outputImageId