本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
工作流程文档支持的步骤操作
本节详细介绍了 Image Builder 支持的步骤操作。
本节中使用的术语
- AMI
-
亚马逊机器映像
- 进行筛选
-
Amazon 资源名称
支持的操作
ApplyImageConfigurations
此步骤操作将各种配置和集成应用于分布式 AMIs,例如许可证配置、启动模板配置、S3 导出配置、 EC2 快速启动配置和 Systems Manager 参数配置。配置仅适用于源账户中的分布式映像,但可以跨账户应用的 SSM 参数配置除外。
默认超时:360 分钟
最大超时:720 分钟
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| 区域 | 图像区域。 | 字符串 | 是 | ||
| licenseConfigurationArns | 镜像的许可配置 ARN。 | 数组 | 否 | ||
| launchTemplateConfigurations | 数组 | 否 | |||
| launchTemplateConfigurations:launchTemplateId | 要应用于图像的启动模板 ID。 | 字符串 | 如果launchTemplateConfigurations已指定,则是 |
||
| launchTemplateConfigurations:账户 ID | IDs 要应用于图片的启动模板账户。 | 字符串 | 否 | ||
| launchTemplateConfigurations:setDefaultVersion | 图像的启动模板默认版本设置。 | 布尔值 | 否 | ||
| s3 ExportConfiguration | 数组 | 否 | |||
| s3ExportConfiguration: 角色名 | 映像的 S3 导出配置角色名称。 | 字符串 | 如果s3ExportConfiguration已指定,则是 |
||
| s3ExportConfiguration:diskImageFormat | 映像的 S3 导出配置磁盘映像格式。 | 字符串 | 如果s3ExportConfiguration已指定,则是 |
允许的值-VMDK|RAW|VHD | |
| s3: s3Bucket ExportConfiguration | 映像的 S3 导出配置存储桶名称。 | 字符串 | 如果s3ExportConfiguration已指定,则是 |
||
| s3: s3Prefix ExportConfiguration | 映像的 S3 导出配置存储桶前缀。 | 字符串 | 否 | ||
| fastLaunchConfigurations | 映像的 EC2 快速启动配置。 | 数组 | 否 | ||
| fastLaunchConfigurations:已启用 | EC2 图像 enabled/disabled 的快速启动。 | 布尔值 | 如果fastLaunchConfigurations已指定,则是 |
||
| fastLaunchConfigurations:快照配置 | EC2 图像 enabled/disabled 的快速启动。 | Map | 否 | ||
| fastLaunchConfigurations:快照配置:targetResourceCount | EC2 快速启动图像的目标资源数量。 | 整数 | 否 | ||
| fastLaunchConfigurations:maxParallelLaunches | EC2 Fast Launch 图像的最大并行启动次数。 | 整数 | 否 | ||
| fastLaunchConfigurations:启动模板 | 否 | ||||
| fastLaunchConfigurations:启动模板:launchTemplateId | EC2 图像的快速启动启动模板 ID。 | 字符串 | 否 | ||
| fastLaunchConfigurations:启动模板:launchTemplateName | EC2 快速启动镜像的启动模板名称。 | 字符串 | 否 | ||
| fastLaunchConfigurations:启动模板:launchTemplateVersion | EC2 快速启动启动镜像的模板版本。 | 字符串 | 否 | ||
| ssmParameterConfigurations | 镜像的 SSM 参数配置。 | Map | 否 | ||
| ssmParameterConfigurations:amiAccountId | 图像的 SSM 参数 AMI 账户 ID。 | 字符串 | 否 | ||
| ssmParameterConfigurations:parameterName | 图像的 SSM 参数名称。 | 字符串 | 如果ssmParameterConfigurations已指定,则是 |
||
| ssmParameterConfigurations:dataType | 图像的 SSM 参数数据类型。 | 字符串 | 否 | 允许的值-文本 | aws: ec2: image) |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| 配置镜像 | 已配置映像的列表。 | 数组 |
| 配置镜像:账号 ID | 分布式镜像的目标账户 ID。 | 字符串 |
| 配置图像:名称 | AMI 的名称。 | 字符串 |
| 配置图片:amiid | 分布式映像的 AMI ID。 | 字符串 |
| 配置图片:开始日期 | 开始分发的 UTC 时间。 | 字符串 |
| 配置图片:日期已停止 | 分发完成时的 UTC 时间。 | 字符串 |
| 配置图像:步骤 | 分发停止的步骤。 | 已完成| | AssociateLicensesRunning | | UpdateLaunchTemplateRunning | PutSsmParametersRunning | UpdateFastLaunchConfiguration ExportAmiQueued ExportAmiRunning |
| 配置图片:区域 | 分布式映像的 Amazon | 字符串 |
| 配置图像:状态 | 分发状态。 | 已完成 | 失败 | 已取消 | TimedOut |
| 配置图像:错误消息 | 错误消息(如果有)。 | 字符串 |
示例
在工作流文档中指定步骤操作。
- name:ApplyImageConfigurationsaction: ApplyImageConfigurations onFailure: Abort inputs: distributedImages.$: $.stepOutputs.DistributeImageStep.distributedImages
在工作流文档中使用步骤操作值的输出。
$.stepOutputs.ApplyImageConfigurationsStep.configuredImages
BootstrapInstanceForContainer
此步骤操作运行服务脚本来引导实例,以最低要求运行容器工作流。Image Builder 使用 Systems Manager API 中的 sendCommand 来运行此脚本。有关更多信息,请参阅 Amazon Systems Manager Run Command。
注意
引导脚本会安装 Amazon CLI 和 Docker 包,它们是 Image Builder 成功构建 Docker 容器的先决条件。如果未包含此步骤操作,映像构建可能会失败。
默认超时:60 分钟
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| instanceId | 要引导的实例 ID。 | 字符串 | 是 | 这必须是启动此工作流实例的工作流步骤的输出实例 ID。 |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| runCommandId | 在实例上运行引导脚本的 Systems Manager sendCommand 的 ID。 | 字符串 |
| status | 从 Systems Manager sendCommand 返回的状态。 | 字符串 |
| output | 从 Systems Manager sendCommand 返回的输出。 | 字符串 |
示例
在工作流文档中指定步骤操作。
- name:ContainerBootstrapStepaction: BootstrapInstanceForContainer onFailure: Abort inputs: instanceId.$: $.stepOutputs.LaunchStep.instanceId
在工作流文档中使用步骤操作值的输出。
$.stepOutputs.ContainerBootstrapStep.status
CollectImageMetadata
此步骤操作仅对构建工作流有效。
EC2 Image Builder 在其启动的 EC2 实例上运行 Amazon Systems Manager (Systems Manager)代理,以构建和测试您的映像。Image Builder 使用 Systems Manager 清单,以收集在构建阶段使用的实例的其他信息。该信息包括操作系统 (OS) 名称和版本,以及操作系统报告的软件包及其相应版本的列表。
注意
此步骤操作仅适用于创建的图像 AMIs。
默认超时:30 分钟
回滚:Image Builder 会回滚在此步骤中创建的所有 Systems Manager 资源。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| instanceId | 应用元数据设置的构建实例。 | 字符串 | 是 | 这必须是启动此工作流构建实例的工作流步骤的输出实例 ID。 |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| osVersion | 从构建实例收集的操作系统名称和版本。 | 字符串 |
| associationId | 用于清单收集的 Systems Manager 关联 ID。 | 字符串 |
示例
在工作流文档中指定步骤操作。
- name:CollectMetadataStepaction: CollectImageMetadata onFailure: Abort inputs: instanceId: $.stepOutputs.LaunchStep.instanceId
在工作流文档中使用步骤操作的输出。
$.stepOutputs.CollectMetadataStep.osVersion
CollectImageScanFindings
如果您的账户启用了 Amazon Inspector,并且您的管道启用了映像扫描,则此步骤操作会收集 Amazon Inspector 为您的测试实例报告的映像扫描调查发现。此步骤操作不适用于构建工作流。
默认超时:120 分钟
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| instanceId | 在其上运行扫描的实例的 ID。 | 字符串 | 是 | 这必须是启动此工作流实例的工作流步骤的输出实例 ID。 |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| runCommandId | 运行脚本以收集调查发现的 Systems Manager sendCommand 的 ID。 | 字符串 |
| status | 从 Systems Manager sendCommand 返回的状态。 | 字符串 |
| output | 从 Systems Manager sendCommand 返回的输出。 | 字符串 |
示例
在工作流文档中指定步骤操作。
- name:CollectFindingsStepaction: CollectImageScanFindings onFailure: Abort inputs: instanceId.$: $.stepOutputs.LaunchStep.instanceId
在工作流文档中使用步骤操作值的输出。
$.stepOutputs.CollectFindingsStep.status
CreateImage
此步骤操作使用 Amazon EC2 CreateImage API 从正在运行的实例创建映像。在创建过程中,步骤操作会根据需要进行等待,以验证资源是否已达到正确的状态,然后再继续后续操作。
默认超时:720 分钟
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| instanceId | 要从中创建新映像的实例。 | 字符串 | 是 | 此步骤开始时,提供实例 ID 的实例必须处于 running 状态。 |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| imageId | 所创建映像的 AMI ID。 | 字符串 |
示例
在工作流文档中指定步骤操作。
- name:CreateImageFromInstanceaction: CreateImage onFailure: Abort inputs: instanceId.$: "i-1234567890abcdef0"
在工作流文档中使用步骤操作值的输出。
$.stepOutputs.CreateImageFromInstance.imageId
DistributeImage
此步骤操作将 AMI 分发到指定的区域和账户。它根据工作流程中提供的 CreateImage CreateImagePipeline APIs或和/或自定义分发设置请求中提供的分配配置在目标区域和账户中创建 AMI 的副本,以覆盖分发配置中的设置。
默认超时:360 分钟
最大超时:720 分钟
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| 区域 | 要分发图像的区域列表。 | 字符串 | 是 | 最小长度为 1。最大长度为 1024。 | |
| 名称 | 分发配置的名称。 | 字符串 | 否 | ||
| description | 分布配置的分布。 | 字符串 | 否 | ||
| targetAccountIds | IDs 要将图像分发到的账户。 | 数组 | 否 | ||
| amiTags | 分发配置的标签。 | Map | 否 | ||
| kmsKeyId | 应用于分布式映像的 KMS 密钥。 | 字符串 | 否 |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| 分布式图片 | 分布式映像列表 | 数组 |
| 分布式图片:区域 | 分布式图像的 Amazon 区域。 | 字符串 |
| 分布式图片:名称 | AMI 的名称。 | 字符串 |
| 分布式图片:amiid | 分布式映像的 AMI ID。 | 字符串 |
| 分布式图片:账号 ID | 分布式镜像的目标账户 ID。 | 字符串 |
| 分布式图片:开始日期 | 开始分发的 UTC 时间。 | 字符串 |
| 分布式图片:日期已停止 | 分发完成时的 UTC 时间。 | 字符串 |
| 分布式图片:状态 | 分发状态。 | 已完成 | 失败 | 已取消 | TimedOut |
| 分布式图像:步骤 | 分发停止的步骤。 | 已完成| CopyAmiRunning |
| 分布式镜像:错误消息 | 错误消息(如果有)。 | 字符串 |
示例
在工作流文档中指定步骤操作。
- name:DistributeImageaction: DistributeImage onFailure: Abort inputs: distributions: - region.$: "$.parameters.SourceRegion" description: "AMI distribution to source region" amiTags: DistributionTest: "SourceRegion" WorkflowStep: "DistributeToSourceRegion" BuildDate: "{{imagebuilder:buildDate:yyyyMMHHss}}" BuildVersion: "{{imagebuilder:buildVersion}}"
在工作流文档中使用步骤操作值的输出。
$.stepOutputs.DistributeImageStep.distributedImages
ExecuteComponents
此步骤操作会运行配方中为当前正在构建的映像指定的组件。构建工作流在构建实例上运行构建组件。测试工作流仅在测试实例上运行测试组件。
Image Builder 使用 Systems Manager API 中的 sendCommand 来运行组件。有关更多信息,请参阅 Amazon Systems Manager Run Command。
默认超时:720 分钟
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| instanceId | 组件应在其上运行的实例的 ID。 | 字符串 | 是 | 这必须是启动此工作流实例的工作流步骤的输出实例 ID。 |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| runCommandId | 在实例上运行组件的 Systems Manager sendCommand 的 ID。 | 字符串 |
| status | 从 Systems Manager sendCommand 返回的状态。 | 字符串 |
| output | 从 Systems Manager sendCommand 返回的输出。 | 字符串 |
示例
在工作流文档中指定步骤操作。
- name:ExecComponentsStepaction: ExecuteComponents onFailure: Abort inputs: instanceId: $.stepOutputs.LaunchStep.instanceId
在工作流文档中使用步骤操作的输出。
$.stepOutputs.ExecComponentsStep.status
ExecuteStateMachine
此步骤操作从 Image Builder 工作流程中开始执行 Amazon Step Functions 状态机。Image Builder 使用 Step Functions StartExecution API 启动状态机并等待状态机完成。这对于将复杂的工作流程、合规性验证或认证流程集成到您的图像构建管道中非常有用。
有关更多信息,请参阅《Amazon Step Functions 开发者指南》中的 Step Functions 中了解状态机。
默认超时:6 小时
最大超时:24 小时
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| stateMachineArn | 要执行的 Step Functions 状态机的 ARN。 | 字符串 | 是 | 必须是有效的状态机 ARN。 | |
| input | 要提供给状态机的 JSON 输入数据。 | 字符串 | 否 | {} | 必须是有效的 JSON 字符串,最大长度:16 KiB。 |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| 执行 Arn | 状态机执行的 ARN。 | 字符串 |
需要 IAM 权限
您的自定义执行角色必须具有以下权限才能使用此步骤操作:
允许操作
-
states:StartExecution -
states:DescribeExecution
指定资源
-
arn:aws:states:us-west-2:111122223333:stateMachine:state-machine-name -
arn:aws:states:us-west-2:111122223333:execution:state-machine-name:*
示例
在工作流文档中指定步骤操作。
- name:ValidateImageComplianceaction: ExecuteStateMachine timeoutSeconds: 3600 onFailure: Abort inputs: stateMachineArn: arn:aws:states:us-west-2:111122223333:stateMachine:ImageComplianceValidationinput: | { "imageId": "{{ $.stepOutputs.CreateImageFromInstance.imageId }}", "region": "us-west-2", "complianceLevel": "high", "requiredScans": ["cve", "benchmark", "configuration"] }
在工作流文档中使用步骤操作值的输出。
$.stepOutputs.ValidateImageCompliance.executionArn
LaunchInstance
此步骤操作将在您的中启动一个实例, Amazon Web Services 账户 并等待 Systems Manager 代理在该实例上运行,然后再继续下一步操作。启动操作使用与您的映像关联的配方和基础设施配置资源中的设置。例如,要启动的实例类型来自基础设施配置。输出是其启动的实例的实例 ID。
waitFor 输入会配置满足步骤完成要求的条件。
默认超时:60 分钟
回滚:对于构建实例,回滚会执行您在基础设施配置资源中配置的操作。默认情况下,如果映像创建失败,则会终止构建实例。但是,基础设施配置中有一个设置,用于保留构建实例以进行故障排除。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| imageIdOverride | 用于启动实例的镜像 | 字符串 | 否 |
构建阶段:图像配方基础图片 测试阶段:从构建阶段输出 AMI |
必须是有效的 AMI ID |
| instanceTypesOverride | Image Builder 会尝试列表中的每种实例类型,直到找到成功启动的实例类型 | 字符串列表 | 否 | 在您的基础设施配置中指定的实例类型 | 必须是有效的实例类型 |
| waitFor | 在完成工作流程步骤并进入下一步之前要等待的条件 | 字符串 | 是 | Image Builder 支持 ssmAgent。 |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| instanceId | 所启动实例的实例 ID。 | 字符串 |
示例
在工作流文档中指定步骤操作。
- name:LaunchStepaction: LaunchInstance onFailure: Abort inputs: waitFor:ssmAgent
在工作流文档中使用步骤操作的输出。
$.stepOutputs.LaunchStep.instanceId
ModifyImageAttributes
此步骤操作修改分布式的属性 AMIs,例如启动权限和其他 AMI 属性。它对 AMIs 已分配给目标地区和账户的内容进行操作。
默认超时:120 分钟
最大超时时间:180 分钟
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| 区域 | 图像的区域。 | 字符串 | 是 | ||
| 启动权限 | 否 | ||||
| 启动权限:用户 ID | 在图像 IDs 的启动权限中要修改的用户。 | 字符串 | 否 | ||
| 启动权限:用户组 | 在图像的启动权限中要修改的用户组。 | 字符串 | 否 | ||
| 启动权限:组织 ARN | 在镜像的启动权限中 ARNs 要修改的 Amazon 组织。 | 字符串 | 否 | ||
| 启动权限:organizationalUnitArns | 在镜像的启动权限中 ARNs 要修改的 Amazon 组织单位。 | 字符串 | 否 |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| ModifiedImages | 修改过的图像列表 | 数组 |
| 修改过的图片:账号 ID | 分布式镜像的目标账户 ID。 | 字符串 |
| 修改后的图片:名称 | AMI 的名称。 | 字符串 |
| 修改后的图片:amiid | 分布式映像的 AMI ID。 | 字符串 |
| 修改后的图片:开始日期 | 开始分发的 UTC 时间。 | 字符串 |
| 修改后的图片:日期已停止 | 分发完成时的 UTC 时间。 | 字符串 |
| 修改后的图像:步骤 | 分发停止的步骤。 | 已完成| ModifyAmiRunning |
| 修改后的图片:区域 | 图像的 Amazon 区域。 | 字符串 |
| 修改后的图片:状态 | 分发状态。 | 已完成 | 失败 | 已取消 | TimedOut |
| 修改后的图像:错误消息 | 错误消息(如果有)。 | 字符串 |
示例
在工作流文档中指定步骤操作。
- name:ModifyImageAttributesaction: ModifyImageAttributes onFailure: Abort inputs: distributedImages.$: $.stepOutputs.DistributeImageStep.distributedImages
在工作流文档中使用步骤操作值的输出。
$.stepOutputs.ModifyImageAttributesStep.modifiedImages
RegisterImage
此步骤操作使用亚马逊 API 注册新的亚马逊系统映像 (AM EC2 RegisterImage I)。它允许您根据现有快照或一组快照创建 AMI,并指定各种图像属性。
默认超时:720 分钟
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| 架构 | AMI 的架构。 | 字符串 | 否 | 有效值:i386、x86_64、arm64、x86_64_mac、arm64_mac | |
| blockDeviceMapping | AMI 的块储存设备映射条目。 | 数组 | 否 | ||
| 启动模式 | AMI 的启动模式。 | 字符串 | 否 | 有效值:legacy-bios、uefi、uefi 首选 | |
| description | 对 AMI 的描述。 | 字符串 | 否 | ||
| enaSupport | 是否启用了 ENA 增强联网。 | 布尔值 | 否 | ||
| 图像位置 | AMI 清单的位置。 | 字符串 | 否 | 支持 S3 的必填项 AMIs | |
| IMDS 支持 | 支 IMDSv2 撑级别。 | 字符串 | 否 | 有效值:v2.0 | |
| includeSnapshotTags | 是否包含块储存设备映射中定义的第一个快照中的标签。 | 布尔值 | 否 | FALSE |
设置为 true 时,将按如下方式包含标签:
|
| kerneLid | 要使用的内核的 ID。 | 字符串 | 否 | ||
| ramdisKid | 要使用的 RAM 磁盘的 ID。 | 字符串 | 否 | ||
| rootDeviceName | 根设备的设备名称。 | 字符串 | 否 | 示例:/dev/sda1 | |
| sriovNetSupport | 使用英特尔 82599 VF 接口增强联网。 | 字符串 | 否 | ||
| tpm 支持 | TPM 版本支持。 | 字符串 | 否 | 有效值:v2.0 | |
| uefidata | Base64 编码的 UEFI 数据。 | 字符串 | 否 | ||
| 虚拟化类型 | 虚拟化类型。 | 字符串 | 否 | 有效值:hvm、半虚拟化 |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| imageId | 已注册图像的 AMI ID。 | 字符串 |
示例
在工作流文档中指定步骤操作。
- name: RegisterNewImage action: RegisterImage onFailure: Abort inputs: architecture: "x86_64" bootMode: "uefi" blockDeviceMapping: - DeviceName: "/dev/sda1" Ebs: SnapshotId: "snap-1234567890abcdef0" VolumeSize: 100 VolumeType: "gp3" rootDeviceName: "/dev/sda1" virtualizationType: "hvm"
在工作流文档中使用步骤操作值的输出。
$.stepOutputs.RegisterNewImage.imageId
示例: SnapshotId 来自另一个步骤,生成的 AMI 中包含快照标签
- name: CreateSnapshot action: RunCommand onFailure: Abort inputs: instanceId: "i-1234567890abcdef0" documentName: "AWS-RunShellScript" parameters: commands: - "aws ec2 create-snapshot --volume-idvol-1234567890abcdef0--description 'Snapshot for AMI' --query 'SnapshotId' --output text" - name: RegisterImageFromSnapshot action: RegisterImage onFailure: Abort inputs: architecture: "x86_64" bootMode: "uefi" blockDeviceMapping: - DeviceName: "/dev/sda1" Ebs: SnapshotId.$: "$.stepOutputs.CreateSnapshot.output[0]" VolumeSize: 100 VolumeType: "gp3" includeSnapshotTags: true rootDeviceName: "/dev/sda1" virtualizationType: "hvm"
RunCommand
此步骤操作为您的工作流运行命令文档。Image Builder 使用 Systems Manager API 中的 sendCommand 来为您运行命令文档。有关更多信息,请参阅 Amazon Systems Manager Run Command。
默认超时:12 小时
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| instanceId | 要在其上运行命令文档的实例的 ID。 | 字符串 | 是 | 这必须是启动此工作流实例的工作流步骤的输出实例 ID。 | |
| documentName | 要运行的 Systems Manager 命令文档的名称。 | 字符串 | 是 | ||
| 参数 | 命令文档所需的任何参数的键值对列表。 | dictionary<string, list<string>> | 条件 | ||
| documentVersion | 要运行的命令文档版本。 | 字符串 | 否 | $DEFAULT |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| runCommandId | 在实例上运行命令文档的 Systems Manager sendCommand 的 ID。 | 字符串 |
| status | 从 Systems Manager sendCommand 返回的状态。 | 字符串 |
| output | 从 Systems Manager sendCommand 返回的输出。 | 字符串列表 |
示例
在工作流文档中指定步骤操作。
- name:RunCommandDocaction: RunCommand onFailure: Abort inputs: documentName:SampleDocumentparameters: osPlatform: - "linux" instanceId.$: $.stepOutputs.LaunchStep.instanceId
在工作流文档中使用步骤操作值的输出。
$.stepOutputs.RunCommandDoc.status
RunSysPrep
此步骤操作使用 Systems Manager API 中的 sendCommand 为 Windows 实例运行 AWSEC2-RunSysprep 文档,然后为快照关闭构建实例。这些操作遵循了强化和清理图像 Amazon 的最佳实践。
默认超时:60 分钟
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| instanceId | 要在其上运行 AWSEC2-RunSysprep 文档的实例的 ID。 |
字符串 | 是 | 这必须是启动此工作流实例的工作流步骤的输出实例 ID。 |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| runCommandId | 在实例上运行 AWSEC2-RunSysprep 文档的 Systems Manager sendCommand 的 ID。 |
字符串 |
| status | 从 Systems Manager sendCommand 返回的状态。 | 字符串 |
| output | 从 Systems Manager sendCommand 返回的输出。 | 字符串 |
示例
在工作流文档中指定步骤操作。
- name:RunSysprepaction: RunSysPrep onFailure: Abort inputs: instanceId.$: $.stepOutputs.LaunchStep.instanceId
在工作流文档中使用步骤操作值的输出。
$.stepOutputs.RunSysprep.status
SanitizeInstance
此操作步骤会运行适用于 Linux 实例的推荐清理脚本,然后为快照关闭构建实例。清理脚本可帮助确保最终映像遵循安全最佳实践,并删除不应延续到快照中的构建构件或设置。有关脚本的更多信息,请参阅需要在构建后进行清理。此步骤操作不适用于容器映像。
Image Builder 使用 Systems Manager API 中的 sendCommand 来运行此脚本。有关更多信息,请参阅 Amazon Systems Manager Run Command。
默认超时:60 分钟
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| instanceId | 要清理的实例的 ID。 | 字符串 | 是 | 这必须是启动此工作流实例的工作流步骤的输出实例 ID。 |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| runCommandId | 在实例上运行清理脚本的 Systems Manager sendCommand 的 ID。 | 字符串 |
| status | 从 Systems Manager sendCommand 返回的状态。 | 字符串 |
| output | 从 Systems Manager sendCommand 返回的输出。 | 字符串 |
示例
在工作流文档中指定步骤操作。
- name:SanitizeStepaction: SanitizeInstance onFailure: Abort inputs: instanceId: $.stepOutputs.LaunchStep.instanceId
在工作流文档中使用步骤操作值的输出。
$.stepOutputs.SanitizeStep.status
TerminateInstance
此步骤操作使用作为输入传入的实例 id 终止实例。
默认超时:30 分钟
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| instanceId | 要终止的实例的 ID。 | 字符串 | 是 |
输出:此步骤操作没有输出。
示例
在工作流文档中指定步骤操作。
- name:TerminateInstanceaction: TerminateInstance onFailure: Continue inputs: instanceId.$:i-1234567890abcdef0
WaitForAction
此步骤操作会暂停正在运行的工作流,并等待接收来自 Image Builder SendWorkflowStepAction API 操作的外部操作。此步骤使用详细信息类型将 EventBridge 事件发布到您的默认 EventBridge 事件总线EC2 Image Builder Workflow Step Waiting。如果您提供 SNS 主题 ARN,则该步骤还可以发送 SNS 通知;如果您提供 Lambda 函数名称,则该步骤还可以异步调用 Lambda 函数。
默认超时:3 天
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| snsTopicArn | 可选的 SNS 主题 ARN,用于在工作流步骤处于待处理状态时向其发送通知。 | 字符串 | 否 | ||
| lambdaFunctionName | Lambda 函数的可选名称或 ARN,用于在工作流程步骤处于待处理状态时异步调用。 | 字符串 | 否 | ||
| payload | JSON 字符串用作 SNS 的消息和 Lambda 的有效负载。如果提供,则默认封装自定义有效负载message/payload, used for SNS and Lambda respectively. If not provided, generates default message/payload。 | 字符串 | 否 | 必须是有效的 JSON 字符串,最大 16 KiB |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| action | SendWorkflowStepAction API 操作返回的操作。 | 字符串(RESUME 或 STOP) |
| reason | 返回操作的原因。 | 字符串 |
示例
在带有 SNS 通知的工作流程文档中指定步骤操作。
- name:SendEventAndWaitaction: WaitForAction onFailure: Abort inputs: snsTopicArn: arn:aws:sns:us-west-2:111122223333:ExampleTopic
使用 Lambda 函数调用在工作流程文档中指定步骤操作。
- name:SendEventAndWaitWithLambdaaction: WaitForAction onFailure: Abort inputs: lambdaFunctionName:ExampleFunctionpayload: | { "imageId": "{{ $.stepOutputs.CreateImageFromInstance.imageId }}", "region": "us-west-2" }
在工作流文档中使用步骤操作值的输出。
$.stepOutputs.SendEventAndWait.reason
WaitForSSMAgent
此步骤操作等待 EC2 实例在预期的无响应时间 Amazon Systems Manager 之后变得可控。它对于存在已知实例中断的工作流程(例如系统重启、操作系统升级或暂时断开实例与 SSM 连接的特定于平台的操作)特别有用。Image Builder 会监控该实例,直到它恢复 SSM 连接或超时。
默认超时:60 分钟
最大超时时间:180 分钟
回滚:此步骤操作没有回滚。
输入:下表包含此步骤操作支持的输入。
| 输入名称 | 描述 | Type | 必需 | 默认 | 约束 |
|---|---|---|---|---|---|
| instanceId | 要监控 SSM 连接的实例的 ID。 | 字符串 | 是 | 必须是有效的 EC2 实例 ID |
输出:下表包含此步骤操作的输出。
| 输出名称 | 描述 | Type |
|---|---|---|
| Status | SSM 代理的连接状态。 | 字符串 |
示例
在工作流文档中指定步骤操作。
- name:WaitForInstanceAfterRebootaction: WaitForSSMAgent onFailure: Abort timeoutInSeconds: 900 # 15 minutes inputs: instanceId.$: $.stepOutputs.LaunchStep.instanceId
在工作流文档中使用步骤操作值的输出。
$.stepOutputs.WaitForInstanceAfterReboot.Status