工作流程文件支援的步驟動作 - EC2 Image Builder

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

工作流程文件支援的步驟動作

本節包含 Image Builder 支援的步驟動作詳細資訊。

本節中使用的術語
AMI

Amazon Machine Image

ARN

Amazon Resource Name

ApplyImageConfigurations

此步驟動作會將各種組態和整合套用至分散式 AMIs,例如授權組態、啟動範本組態、S3 匯出組態、EC2 Fast Launch 組態和 Systems Manager 參數組態。組態僅適用於來源帳戶中的分散式映像,但可以跨帳戶套用的 SSM 參數組態除外。

預設逾時:360 分鐘

最大逾時:720 分鐘

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
region 映像區域。 String
licenseConfigurationArns 映像的授權組態 ARN。 陣列
launchTemplateConfigurations 陣列
launchTemplateConfigurations:launchTemplateId 要套用至映像的啟動範本 ID。 String 是,如果launchTemplateConfigurations已指定
launchTemplateConfigurations:accountId 要套用至映像的啟動範本帳戶 IDs。 String
launchTemplateConfigurations:setDefaultVersion 映像的啟動範本預設版本設定。 Boolean
s3ExportConfiguration 陣列
s3ExportConfiguration:roleName 映像的 S3 匯出組態角色名稱。 String 是,如果s3ExportConfiguration已指定
s3ExportConfiguration:diskImageFormat 映像的 S3 匯出組態磁碟映像格式。 String 是,如果s3ExportConfiguration已指定 允許的值 - VMDK|RAW|VHD
s3ExportConfiguration:s3Bucket 映像的 S3 匯出組態儲存貯體名稱。 String 是,如果s3ExportConfiguration已指定
s3ExportConfiguration:s3Prefix 映像的 S3 匯出組態儲存貯體字首。 String
fastLaunchConfigurations 映像的 EC2 Fast Launch 組態。 陣列
fastLaunchConfigurations:已啟用 為映像啟用/停用 EC2 Fast Launch。 Boolean 是,如果fastLaunchConfigurations已指定
fastLaunchConfigurations:snapshotConfiguration 為映像啟用/停用 EC2 Fast Launch。 Map
fastLaunchConfigurations:snapshotConfiguration:targetResourceCount 映像的 EC2 Fast Launch 目標資源計數。 Integer
fastLaunchConfigurations:maxParallelLaunches 映像的 EC2 Fast Launch 平行啟動上限。 Integer
fastLaunchConfigurations:launchTemplate
fastLaunchConfigurations:launchTemplate:launchTemplateId 映像的 EC2 Fast Launch 啟動範本 ID。 String
fastLaunchConfigurations:launchTemplate:launchTemplateName 映像的 EC2 Fast Launch 啟動範本名稱。 String
fastLaunchConfigurations:launchTemplate:launchTemplateVersion 映像的 EC2 Fast Launch 啟動範本版本。 String
ssmParameterConfigurations 映像的 SSM 參數組態。 Map
ssmParameterConfigurations:amiAccountId 映像的 SSM 參數 AMI 帳戶 ID。 String
ssmParameterConfigurations:parameterName 映像的 SSM 參數名稱。 String 是,如果ssmParameterConfigurations已指定
ssmParameterConfigurations:dataType 映像的 SSM 參數資料類型。 String 允許的值 - text|aws:ec2:image)

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
configuredImages 已設定映像的清單。 陣列
configuredImages:accountId 分散式映像的目的地帳戶 ID。 String
configuredImages:name AMI 的名稱。 String
configuredImages:amiId 分散式映像的 AMI ID。 String
configuredImages:dateStarted 分佈開始的 UTC 時間。 String
configuredImages:dateStopped 分佈完成時的 UTC 時間。 String
configuredImages:step 分佈停止的步驟。 已完成|AssociateLicensesRunning|UpdateLaunchTemplateRunning|PutSsmParametersRunning|UpdateFastLaunchConfiguration|ExportAmiQueued|ExportAmiRunning
configuredImages:region 分散式映像的色調 AWS String
configuredImages:status 分佈狀態。 已完成 | 失敗 | 取消 | TimedOut
configuredImages:errorMessage 錯誤訊息,如果有的話。 String

範例

在工作流程文件中指定步驟動作。

- name: ApplyImageConfigurations action: ApplyImageConfigurations onFailure: Abort inputs: distributedImages.$: $.stepOutputs.DistributeImageStep.distributedImages

使用工作流程文件中步驟動作值的輸出。

$.stepOutputs.ApplyImageConfigurationsStep.configuredImages

BootstrapInstanceForContainer

此步驟動作會執行服務指令碼,以最低需求引導執行個體執行容器工作流程。Image Builder 使用 Systems Manager API sendCommand中的 來執行此指令碼。如需詳細資訊,請參閱AWS Systems Manager 執行命令

注意

引導指令碼會安裝 AWS CLI 和 Docker 套件,這些套件是 Image Builder 成功建置 Docker 容器的先決條件。如果您未包含此步驟動作,映像建置可能會失敗。

預設逾時:60 分鐘

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
instanceId 要引導的執行個體 ID。 String 這必須是啟動此工作流程執行個體之工作流程步驟的輸出執行個體 ID。

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
runCommandId 在執行個體上執行sendCommand引導指令碼的 Systems Manager ID。 String
status 從 Systems Manager 傳回的狀態sendCommand String
output 從 Systems Manager 傳回的輸出sendCommand String

範例

在工作流程文件中指定步驟動作。

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

使用工作流程文件中步驟動作值的輸出。

$.stepOutputs.ContainerBootstrapStep.status

CollectImageMetadata

此步驟動作僅適用於建置工作流程。

EC2 Image Builder 會在啟動的 EC2 執行個體上執行 AWS Systems Manager (Systems Manager) Agent,以建置和測試您的映像。Image Builder 會收集有關 Systems Manager 庫存建置階段期間所用執行個體的其他資訊。此資訊包括作業系統 (OS) 名稱和版本,以及您作業系統報告的套件清單及其個別版本。

注意

此步驟動作僅適用於建立 AMIs的影像。

預設逾時:30 分鐘

回復:Image Builder 會回復此步驟期間建立的任何 Systems Manager 資源。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
instanceId 要套用中繼資料設定的建置執行個體。 String 這必須是啟動此工作流程建置執行個體之工作流程步驟的輸出執行個體 ID。

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
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 分鐘

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
instanceId 執行掃描之執行個體的 ID。 String 這必須是啟動此工作流程執行個體之工作流程步驟的輸出執行個體 ID。

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
runCommandId sendCommand 執行指令碼以收集問題清單的 Systems Manager ID。 String
status 從 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 EC2 CreateImage API 從執行中的執行個體建立映像。在建立過程中,步驟動作會視需要等待,以確認資源已達到正確的狀態,然後再繼續。

預設逾時:720 分鐘

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
instanceId 要從中建立新映像的執行個體。 String 此步驟開始時,所提供執行個體 ID 的執行個體必須處於 running 狀態。

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
imageId 建立之映像的 AMI ID。 String

範例

在工作流程文件中指定步驟動作。

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

使用工作流程文件中步驟動作值的輸出。

$.stepOutputs.CreateImageFromInstance.imageId

DistributeImage

此步驟動作會將 AMI 分配至指定的區域和帳戶。它會根據 CreateImage 或 CreateImagePipeline APIs 的請求中提供的分佈組態,或工作流程中提供的自訂分佈設定,在目標區域和帳戶中建立 AMI 的副本,以覆寫分佈組態中的設定。

預設逾時:360 分鐘

最大逾時:720 分鐘

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
region 要分發映像的區域清單。 String 長度下限為 1。長度上限為 1024。
name 分佈組態的名稱。 String
description 分佈組態的分佈。 String
targetAccountIds 要分發映像的帳戶 IDs。 陣列
amiTags 分佈組態的標籤。 Map
kmsKeyId 要套用至分散式映像的 KMS 金鑰。 String

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
distributedImages 分散式映像的清單 陣列
distributedImages:region 分散式映像的色調 AWS 區域。 String
distributedImages:name AMI 的名稱。 String
distributedImages:amiId 分散式映像的 AMI ID。 String
distributedImages:accountId 分散式映像的目的地帳戶 ID。 String
distributedImages:dateStarted 分佈開始的 UTC 時間。 String
distributedImages:dateStopped 分佈完成時的 UTC 時間。 String
distributedImages:status 分佈狀態。 已完成 | 失敗 | 取消 | TimedOut
distributedImages:step 分佈停止的步驟。 已完成|CopyAmiRunning
distributedImages:errorMessage 錯誤訊息,如果有的話。 String

範例

在工作流程文件中指定步驟動作。

- name: DistributeImage action: 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中的 來執行元件。如需詳細資訊,請參閱AWS Systems Manager 執行命令

預設逾時:720 分鐘

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
instanceId 元件應執行的執行個體 ID。 String 這必須是啟動此工作流程執行個體之工作流程步驟的輸出執行個體 ID。

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
runCommandId 在執行個體上執行sendCommand元件的 Systems Manager ID。 String
status 從 Systems Manager 傳回的狀態sendCommand String
output 從 Systems Manager 傳回的輸出sendCommand String

範例

在工作流程文件中指定步驟動作。

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

使用工作流程文件中步驟動作的輸出。

$.stepOutputs.ExecComponentsStep.status

ExecuteStateMachine

此步驟動作會從映像建置器工作流程開始執行 AWS Step Functions 狀態機器。Image Builder 使用 Step Functions StartExecution API 啟動狀態機器並等待其完成。這有助於將複雜的工作流程、合規驗證或認證程序整合到您的映像建置管道。

如需詳細資訊,請參閱《 AWS Step Functions 開發人員指南》中的了解 Step Functions 中的狀態機器

預設逾時:6 小時

最大逾時:24 小時

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
stateMachineArn 要執行之 Step Functions 狀態機器的 ARN。 String 必須是有效的狀態機器 ARN。
input 要提供給狀態機器的 JSON 輸入資料。 String {} 必須是有效的 JSON 字串,長度上限為:16 KiB。

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
executionArn 狀態機器執行的 ARN。 String

需要 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: ValidateImageCompliance action: ExecuteStateMachine timeoutSeconds: 3600 onFailure: Abort inputs: stateMachineArn: arn:aws:states:us-west-2:111122223333:stateMachine:ImageComplianceValidation input: | { "imageId": "{{ $.stepOutputs.CreateImageFromInstance.imageId }}", "region": "us-west-2", "complianceLevel": "high", "requiredScans": ["cve", "benchmark", "configuration"] }

使用工作流程文件中步驟動作值的輸出。

$.stepOutputs.ValidateImageCompliance.executionArn

LaunchInstance

此步驟動作會在 中啟動執行個體, AWS 帳戶 並等到 Systems Manager 代理程式在執行個體上執行,再繼續進行下一個步驟。啟動動作會使用配方中的設定,以及與映像相關聯的基礎設施組態資源。例如,要啟動的執行個體類型來自基礎設施組態。輸出是其啟動之執行個體的執行個體 ID。

waitFor 輸入會設定滿足步驟完成要求的條件。

預設逾時:60 分鐘

回復:對於建置執行個體,回復會執行您在基礎設施組態資源中設定的動作。根據預設,如果映像建立失敗,組建執行個體會終止。不過,基礎設施組態中有一個設定可保留建置執行個體以進行故障診斷。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
imageIdOverride 用來啟動執行個體的映像 String

建置階段:映像配方基礎映像

測試階段:從建置階段輸出 AMI

必須是有效的 AMI ID
instanceTypesOverride Image Builder 會嘗試清單中的每個執行個體類型,直到找到成功啟動的執行個體 字串的清單 基礎設施組態中指定的執行個體類型 必須是有效的執行個體類型
waitFor 在完成工作流程步驟並繼續進行下一個步驟之前等待的條件 String Image Builder 支援 ssmAgent

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
instanceId 啟動之執行個體的執行個體 ID。 String

範例

在工作流程文件中指定步驟動作。

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

使用工作流程文件中步驟動作的輸出。

$.stepOutputs.LaunchStep.instanceId

ModifyImageAttributes

此步驟動作會修改分散式 AMIs的屬性,例如啟動許可和其他 AMI 屬性。它在已分發至目標區域和帳戶的 AMIs 上運作。

預設逾時:120 分鐘

最大逾時:180 分鐘

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
region 影像的區域。 String
launchPermission
launchPermission:userIds 在映像的啟動許可中要修改的使用者 IDs。 String
launchPermission:userGroups 在映像的啟動許可中要修改的使用者群組。 String
launchPermission:organizationArns 在映像的啟動許可中要修改 AWS 的組織 ARNs。 String
launchPermission:organizationalUnitArns 在映像的啟動許可中要修改 AWS 的組織單位 ARNs。 String

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
modifiedImages 修改後的映像清單 陣列
modifiedImages:accountId 分散式映像的目的地帳戶 ID。 String
modifiedImages:name AMI 的名稱。 String
modifiedImages:amiId 分散式映像的 AMI ID。 String
modifiedImages:dateStarted 分佈開始的 UTC 時間。 String
modifiedImages:dateStopped 分佈完成時的 UTC 時間。 String
modifiedImages:step 分佈停止的步驟。 已完成|ModifyAmiRunning
modifiedImages:region 影像的色調 AWS 區域。 String
modifiedImages:status 分佈狀態。 已完成 | 失敗 | 取消 | TimedOut
modifiedImages:errorMessage 錯誤訊息,如果有的話。 String

範例

在工作流程文件中指定步驟動作。

- name: ModifyImageAttributes action: ModifyImageAttributes onFailure: Abort inputs: distributedImages.$: $.stepOutputs.DistributeImageStep.distributedImages

使用工作流程文件中步驟動作值的輸出。

$.stepOutputs.ModifyImageAttributesStep.modifiedImages

RegisterImage

此步驟動作會使用 Amazon EC2 RegisterImage API 註冊新的 Amazon Machine Image (AMI)。 RegisterImage 它可讓您從現有的快照或一組快照建立 AMI,並指定各種影像屬性。

預設逾時:720 分鐘

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
架構 AMI 的架構。 String 有效值:i386、x86_64、arm64、x86_64_mac、arm64_mac
blockDeviceMapping AMI 的區塊型設備映射項目。 陣列
bootMode AMI 的開機模式。 String 有效值: legacy-bios、uefi、uefi-preferred
description AMI 的說明。 String
enaSupport 是否已啟用與 ENA 的增強型聯網。 Boolean
imageLocation AMI 資訊清單的位置。 String S3-backed AMIs
imdsSupport IMDSv2 支援層級。 String 有效值:v2.0
includeSnapshotTags 是否包含區塊型設備映射中定義之第一個快照的標籤。 Boolean FALSE

設為 true 時,標籤會包含如下:

  • blockDeviceMapping 清單中SnapshotId第一個 EBS 磁碟區的 標籤會與 AMI SnapshotId 註冊標籤合併。

  • AMI 註冊標籤優先於具有相同金鑰的快照標籤。

  • AWS 預留標籤 (索引鍵開頭為 的標籤aws:) 會自動排除。

  • 如果定義SnapshotId了具有 的多個 EBS 磁碟區,則只會SnapshotId包含清單中第一個 EBS 磁碟區的標籤。

kernelId 要使用的核心 ID。 String
ramdiskId 要使用的 RAM 磁碟 ID。 String
rootDeviceName 根裝置的裝置名稱。 String 範例:/dev/sda1
sriovNetSupport 使用 Intel 82599 VF 介面增強聯網。 String
tpmSupport TPM 版本支援。 String 有效值:v2.0
uefiData Base64-encoded的 UEFI 資料。 String
virtualizationType 虛擬化類型。 String 有效值:hvm、paravirtual

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
imageId 已註冊映像的 AMI ID。 String

範例

在工作流程文件中指定步驟動作。

- 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-id vol-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中的 為您執行。如需詳細資訊,請參閱AWS Systems Manager 執行命令

預設逾時:12 小時

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
instanceId 執行命令文件的執行個體 ID。 String 這必須是啟動此工作流程執行個體之工作流程步驟的輸出執行個體 ID。
documentName 要執行的 Systems Manager 命令文件的名稱。 String
parameters 命令文件所需任何參數的索引鍵值對清單。 字典 <string, list<string>> 有條件
documentVersion 要執行的命令文件版本。 String $DEFAULT

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
runCommandId 在執行個體上執行sendCommand命令文件的 Systems Manager ID。 String
status 從 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

此步驟動作會使用 Systems Manager API sendCommand中的 ,在建置執行個體關閉快照之前執行 Windows 執行個體AWSEC2-RunSysprep的文件。這些動作遵循AWS 強化和清理映像的最佳實務

預設逾時:60 分鐘

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
instanceId 要執行AWSEC2-RunSysprep文件的執行個體 ID。 String 這必須是啟動此工作流程執行個體之工作流程步驟的輸出執行個體 ID。

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
runCommandId 在執行個體上執行sendCommandAWSEC2-RunSysprep文件的 Systems Manager ID。 String
status 從 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 API sendCommand中的 來執行此指令碼。如需詳細資訊,請參閱AWS Systems Manager 執行命令

預設逾時:60 分鐘

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
instanceId 要淨化的執行個體 ID。 String 這必須是啟動此工作流程執行個體之工作流程步驟的輸出執行個體 ID。

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
runCommandId 在執行個體上執行sendCommand淨化指令碼的 Systems Manager ID。 String
status 從 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 分鐘

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
instanceId 要終止的執行個體 ID。 String

輸出:此步驟動作沒有輸出。

範例

在工作流程文件中指定步驟動作。

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

WaitForAction

此步驟動作會暫停執行中的工作流程,並等待從映像建置器 SendWorkflowStepAction API 動作接收外部動作。此步驟會將 EventBridge 事件發佈至具有詳細資訊類型 的預設 EventBridge 事件匯流排EC2 Image Builder Workflow Step Waiting。如果您提供 SNS 主題 ARN,步驟也可以傳送 SNS 通知,或者如果您提供 Lambda 函數名稱,也可以非同步叫用 Lambda 函數。

預設逾時:3 天

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
snsTopicArn 選用的 SNS 主題 ARN,可在工作流程步驟擱置時傳送通知給 。 String
lambdaFunctionName Lambda 函數的選用名稱或 ARN,可在工作流程步驟待定時以非同步方式叫用。 String
payload 用作 SNS 訊息和 Lambda 承載的 JSON 字串。如果提供,自訂承載會包裝在預設訊息/承載中,分別用於 SNS 和 Lambda。如果未提供, 會產生預設訊息/承載。 String 必須是有效的 JSON 字串,上限為 16 KiB

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
動作 SendWorkflowStepAction API 動作傳回的動作。 字串 (RESUMESTOP)
reason 傳回動作的原因。 String

範例

使用 SNS 通知在工作流程文件中指定步驟動作。

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

使用 Lambda 函數調用在工作流程文件中指定步驟動作。

- name: SendEventAndWaitWithLambda action: WaitForAction onFailure: Abort inputs: lambdaFunctionName: ExampleFunction payload: | { "imageId": "{{ $.stepOutputs.CreateImageFromInstance.imageId }}", "region": "us-west-2" }

使用工作流程文件中步驟動作值的輸出。

$.stepOutputs.SendEventAndWait.reason

WaitForSSMAgent

在預期的無回應期間之後,此步驟動作會等待 EC2 執行個體變成可由 AWS Systems Manager 管理。對於已知執行個體中斷的工作流程特別重要,例如系統重新啟動、作業系統升級,或暫時中斷執行個體與 SSM 連線的平台特定操作。Image Builder 會監控執行個體,直到它重新取得 SSM 連線或逾時為止。

預設逾時:60 分鐘

最大逾時:180 分鐘

回復:此步驟動作沒有回復。

輸入:下表包含此步驟動作支援的輸入。

輸入名稱 Description (描述) 類型 必要 預設 Constraints
instanceId 要監控 SSM 連線的執行個體 ID。 String 必須是有效的 EC2 執行個體 ID

輸出:下表包含此步驟動作的輸出。

輸出名稱 Description (描述) 類型
狀態 SSM Agent 的連線狀態。 String

範例

在工作流程文件中指定步驟動作。

- name: WaitForInstanceAfterReboot action: WaitForSSMAgent onFailure: Abort timeoutInSeconds: 900 # 15 minutes inputs: instanceId.$: $.stepOutputs.LaunchStep.instanceId

使用工作流程文件中步驟動作值的輸出。

$.stepOutputs.WaitForInstanceAfterReboot.Status