工作流程文档支持的步骤操作 - EC2Image Builder
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

工作流程文档支持的步骤操作

本节详细介绍了 Image Builder 支持的步骤操作。

本节中使用的术语
AMI

亚马逊机器映像

ARN

Amazon 资源名称

BootstrapInstanceForContainer

此步骤操作运行服务脚本来引导实例,以最低要求运行容器工作流。Image Builder 使用 Systems Manager sendCommand 中的API来运行此脚本。有关更多信息,请参阅 Amazon Systems Manager Run Command

注意

引导脚本会安装 Amazon CLI 和 Docker 包,它们是 Image Builder 成功构建 Docker 容器的先决条件。如果未包含此步骤操作,映像构建可能会失败。

默认超时:60 分钟

回滚:此步骤操作没有回滚。

输入:下表包含此步骤操作支持的输入。

输入名称 描述 Type Required 默认 约束
instanceId 要引导的实例 ID。 String Yes 这必须是启动此工作流实例的工作流步骤的输出实例 ID。

输出:下表包含此步骤操作的输出。

输出名称 描述 Type
runCommandId 在实例上运行引导脚本的 Systems Manager sendCommand 的 ID。 String
状态 从 Systems Manager sendCommand 返回的状态。 String
output 从 Systems Manager sendCommand 返回的输出。 String

示例

在工作流文档中指定步骤操作。

- name: ContainerBootstrapStep action: BootstrapInstanceForContainer onFailure: Abort inputs: instanceId.$: $.stepOutputs.LaunchStep.instanceId

在工作流文档中使用步骤操作值的输出。

$.stepOutputs.ContainerBootstrapStep.status

CollectImageMetadata

此步骤操作仅对构建工作流有效。

EC2Image Builder 在其启动的EC2实例上运行 Amazon Systems Manager (Systems Manager)代理,以构建和测试您的映像。Image Builder 使用 Systems Manager 清单,以收集在构建阶段使用的实例的其他信息。该信息包括操作系统 (OS) 名称和版本,以及操作系统报告的软件包及其相应版本的列表。

注意

此步骤操作仅适用于创建的图像AMIs。

默认超时:30 分钟

回滚:Image Builder 会回滚在此步骤中创建的所有 Systems Manager 资源。

输入:下表包含此步骤操作支持的输入。

输入名称 描述 Type Required 默认 约束
instanceId 应用元数据设置的构建实例。 String Yes 这必须是启动此工作流构建实例的工作流步骤的输出实例 ID。

输出:下表包含此步骤操作的输出。

输出名称 描述 Type
osVersion 从构建实例收集的操作系统名称和版本。 String
associationId 用于清单收集的 Systems Manager 关联 ID。 String

示例

在工作流文档中指定步骤操作。

- name: CollectMetadataStep action: CollectImageMetadata onFailure: Abort inputs: instanceId: $.stepOutputs.LaunchStep.instanceId

在工作流文档中使用步骤操作的输出。

$.stepOutputs.CollectMetadataStep.osVersion

CollectImageScanFindings

如果您的账户启用了 Amazon Inspector,并且您的管道启用了映像扫描,则此步骤操作会收集 Amazon Inspector 为您的测试实例报告的映像扫描调查发现。此步骤操作不适用于构建工作流。

默认超时:120 分钟

回滚:此步骤操作没有回滚。

输入:下表包含此步骤操作支持的输入。

输入名称 描述 Type Required 默认 约束
instanceId 在其上运行扫描的实例的 ID。 String Yes 这必须是启动此工作流实例的工作流步骤的输出实例 ID。

输出:下表包含此步骤操作的输出。

输出名称 描述 Type
runCommandId 运行脚本以收集调查发现的 Systems Manager sendCommand 的 ID。 String
状态 从 Systems Manager sendCommand 返回的状态。 String
output 从 Systems Manager sendCommand 返回的输出。 String

示例

在工作流文档中指定步骤操作。

- name: CollectFindingsStep action: CollectImageScanFindings onFailure: Abort inputs: instanceId.$: $.stepOutputs.LaunchStep.instanceId

在工作流文档中使用步骤操作值的输出。

$.stepOutputs.CollectFindingsStep.status

CreateImage

此步骤操作从 Amazon 正在运行的实例中创建映像EC2CreateImageAPI。在创建过程中,步骤操作会根据需要进行等待,以验证资源是否已达到正确的状态,然后再继续后续操作。

默认超时:720 分钟

回滚:此步骤操作没有回滚。

输入:下表包含此步骤操作支持的输入。

输入名称 描述 Type Required 默认 约束
instanceId 要从中创建新映像的实例。 String Yes 此步骤开始时,提供实例 ID 的实例必须处于 running 状态。

输出:下表包含此步骤操作的输出。

输出名称 描述 Type
imageId 创建的图像的 AMI ID。 String

示例

在工作流文档中指定步骤操作。

- name: CreateImageFromInstance action: CreateImage onFailure: Abort inputs: instanceId.$: "i-1234567890abcdef0"

在工作流文档中使用步骤操作值的输出。

$.stepOutputs.CreateImageFromInstance.imageId

ExecuteComponents

此步骤操作会运行配方中为当前正在构建的映像指定的组件。构建工作流在构建实例上运行构建组件。测试工作流仅在测试实例上运行测试组件。

Image Builder 使用 Systems Manager sendCommand 中的API来运行组件。有关更多信息,请参阅 Amazon Systems Manager Run Command

默认超时:720 分钟

回滚:此步骤操作没有回滚。

输入:下表包含此步骤操作支持的输入。

输入名称 描述 Type Required 默认 约束
instanceId 组件应在其上运行的实例的 ID。 String Yes 这必须是启动此工作流实例的工作流步骤的输出实例 ID。

输出:下表包含此步骤操作的输出。

输出名称 描述 Type
runCommandId 在实例上运行组件的 Systems Manager sendCommand 的 ID。 String
状态 从 Systems Manager sendCommand 返回的状态。 String
output 从 Systems Manager sendCommand 返回的输出。 String

示例

在工作流文档中指定步骤操作。

- name: ExecComponentsStep action: ExecuteComponents onFailure: Abort inputs: instanceId: $.stepOutputs.LaunchStep.instanceId

在工作流文档中使用步骤操作的输出。

$.stepOutputs.ExecComponentsStep.status

LaunchInstance

此步骤操作将在您的中启动一个实例, Amazon Web Services 账户 并等待 Systems Manager 代理在该实例上运行,然后再继续下一步操作。启动操作使用与您的映像关联的配方和基础设施配置资源中的设置。例如,要启动的实例类型来自基础设施配置。输出是其启动的实例的实例 ID。

waitFor 输入会配置满足步骤完成要求的条件。

默认超时:60 分钟

回滚:对于构建实例,回滚会执行您在基础设施配置资源中配置的操作。默认情况下,如果映像创建失败,则会终止构建实例。但是,基础设施配置中有一个设置,用于保留构建实例以进行故障排除。

输入:下表包含此步骤操作支持的输入。

输入名称 描述 Type Required 默认 约束
waitFor 在完成工作流步骤并继续下一步之前要等待的条件。 String Yes Image Builder 目前支持 ssmAgent

输出:下表包含此步骤操作的输出。

输出名称 描述 Type
instanceId 所启动实例的实例 ID。 String

示例

在工作流文档中指定步骤操作。

- name: LaunchStep action: LaunchInstance onFailure: Abort inputs: waitFor: ssmAgent

在工作流文档中使用步骤操作的输出。

$.stepOutputs.LaunchStep.instanceId

RunCommand

此步骤操作为您的工作流运行命令文档。Image Builder 使用 Systems Manager sendCommand 中的API来为你运行它。有关更多信息,请参阅 Amazon Systems Manager Run Command

默认超时:12 小时

回滚:此步骤操作没有回滚。

输入:下表包含此步骤操作支持的输入。

输入名称 描述 Type Required 默认 约束
instanceId 要在其上运行命令文档的实例的 ID。 String Yes 这必须是启动此工作流实例的工作流步骤的输出实例 ID。
documentName 要运行的 Systems Manager 命令文档的名称。 String Yes
参数 命令文档所需的任何参数的键值对列表。 dictionary<string, list<string>> 条件
documentVersion 要运行的命令文档版本。 String $DEFAULT

输出:下表包含此步骤操作的输出。

输出名称 描述 Type
runCommandId 在实例上运行命令文档的 Systems Manager sendCommand 的 ID。 String
状态 从 Systems Manager sendCommand 返回的状态。 String
output 从 Systems Manager sendCommand 返回的输出。 字符串列表

示例

在工作流文档中指定步骤操作。

- name: RunCommandDoc action: RunCommand onFailure: Abort inputs: documentName: SampleDocument parameters: osPlatform: - "linux" instanceId.$: $.stepOutputs.LaunchStep.instanceId

在工作流文档中使用步骤操作值的输出。

$.stepOutputs.RunCommandDoc.status

RunSysPrep

sendCommand在生成实例关闭快照之前,此步骤操作使用 Systems Manager API 中的,为 Windows 实例运行AWSEC2-RunSysprep文档。这些操作遵循了强化和清理图像 Amazon 的最佳实践。

默认超时:60 分钟

回滚:此步骤操作没有回滚。

输入:下表包含此步骤操作支持的输入。

输入名称 描述 Type Required 默认 约束
instanceId 要在其上运行 AWSEC2-RunSysprep 文档的实例的 ID。 String Yes 这必须是启动此工作流实例的工作流步骤的输出实例 ID。

输出:下表包含此步骤操作的输出。

输出名称 描述 Type
runCommandId 在实例上运行 AWSEC2-RunSysprep 文档的 Systems Manager sendCommand 的 ID。 String
状态 从 Systems Manager sendCommand 返回的状态。 String
output 从 Systems Manager sendCommand 返回的输出。 String

示例

在工作流文档中指定步骤操作。

- name: RunSysprep action: RunSysPrep onFailure: Abort inputs: instanceId.$: $.stepOutputs.LaunchStep.instanceId

在工作流文档中使用步骤操作值的输出。

$.stepOutputs.RunSysprep.status

SanitizeInstance

此操作步骤会运行适用于 Linux 实例的推荐清理脚本,然后为快照关闭构建实例。清理脚本可帮助确保最终映像遵循安全最佳实践,并删除不应延续到快照中的构建构件或设置。有关脚本的更多信息,请参阅需要在构建后进行清理。此步骤操作不适用于容器映像。

Image Builder 使用 Systems Manager sendCommand 中的API来运行此脚本。有关更多信息,请参阅 Amazon Systems Manager Run Command

默认超时:60 分钟

回滚:此步骤操作没有回滚。

输入:下表包含此步骤操作支持的输入。

输入名称 描述 Type Required 默认 约束
instanceId 要清理的实例的 ID。 String Yes 这必须是启动此工作流实例的工作流步骤的输出实例 ID。

输出:下表包含此步骤操作的输出。

输出名称 描述 Type
runCommandId 在实例上运行清理脚本的 Systems Manager sendCommand 的 ID。 String
状态 从 Systems Manager sendCommand 返回的状态。 String
output 从 Systems Manager sendCommand 返回的输出。 String

示例

在工作流文档中指定步骤操作。

- name: SanitizeStep action: SanitizeInstance onFailure: Abort inputs: instanceId: $.stepOutputs.LaunchStep.instanceId

在工作流文档中使用步骤操作值的输出。

$.stepOutputs.SanitizeStep.status

TerminateInstance

此步骤操作使用作为输入传入的实例 id 终止实例。

默认超时:30 分钟

回滚:此步骤操作没有回滚。

输入:下表包含此步骤操作支持的输入。

输入名称 描述 Type Required 默认 约束
instanceId 要终止的实例的 ID。 String Yes

输出:此步骤操作没有输出。

示例

在工作流文档中指定步骤操作。

- name: TerminateInstance action: TerminateInstance onFailure: Continue inputs: instanceId.$: i-1234567890abcdef0

WaitForAction

此步骤操作会暂停正在运行的工作流程,并等待从 Image Builder SendWorkflowStepAction API 操作收到外部操作。此步骤使用详细信息类型将 EventBridge 事件发布到您的默认 EventBridge 事件总线EC2 Image Builder Workflow Step Waiting。如果您提供了SNS主题,则该步骤还可以发送SNS通知ARN。

默认超时:3 天

回滚:此步骤操作没有回滚。

输入:下表包含此步骤操作支持的输入。

输入名称 描述 Type Required 默认 约束
snsTopicArn 一个可选SNS主题ARN,用于在工作流程步骤处于待处理状态时向其发送通知。 String

输出:下表包含此步骤操作的输出。

输出名称 描述 Type
action 操作返回的SendWorkflowStepActionAPI动作。 字符串(RESUMESTOP
reason 返回操作的原因。 String

示例

在工作流文档中指定步骤操作。

- name: SendEventAndWait action: WaitForAction onFailure: Abort inputs: snsTopicArn: arn:aws:sns:us-west-2:111122223333:ExampleTopic

在工作流文档中使用步骤操作值的输出。

$.stepOutputs.SendEventAndWait.reason