本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
工作流程文档支持的步骤操作
本节详细介绍了 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 正在运行的实例中创建映像EC2CreateImage
API。在创建过程中,步骤操作会根据需要进行等待,以验证资源是否已达到正确的状态,然后再继续后续操作。
默认超时: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动作。 | 字符串(RESUME 或 STOP ) |
reason | 返回操作的原因。 | String |
示例
在工作流文档中指定步骤操作。
- name:
SendEventAndWait
action: WaitForAction onFailure: Abort inputs: snsTopicArn: arn:aws:sns:us-west-2
:111122223333
:ExampleTopic
在工作流文档中使用步骤操作值的输出。
$.stepOutputs.
SendEventAndWait
.reason