

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

# 工作流程文件支援的步驟動作
<a name="wfdoc-step-actions"></a>

本節包含 Image Builder 支援的步驟動作詳細資訊。本節中使用的術語

AMI  
Amazon Machine Image

ARN  
Amazon Resource Name

**Topics**
+ [ApplyImageConfigurations](#wfdoc-step-action-apply-image-configurations)
+ [BootstrapInstanceForContainer](#wfdoc-step-action-bootstrap-container)
+ [CollectImageMetadata](#wfdoc-step-action-collect-image-metadata)
+ [CollectImageScanFindings](#wfdoc-step-action-collect-findings)
+ [CreateImage](#wfdoc-step-action-create-img-from-inst)
+ [DistributeImage](#wfdoc-step-action-distribute-image)
+ [ExecuteComponents](#wfdoc-step-action-exec-components)
+ [ExecuteStateMachine](#wfdoc-step-action-exec-state-machine)
+ [LaunchInstance](#wfdoc-step-action-launch-instance)
+ [ModifyImageAttributes](#wfdoc-step-action-modify-image-attributes)
+ [RegisterImage](#wfdoc-step-action-register-image)
+ [RunCommand](#wfdoc-step-action-run-command)
+ [RunSysPrep](#wfdoc-step-action-run-sysprep)
+ [SanitizeInstance](#wfdoc-step-action-sanitize-instance)
+ [TerminateInstance](#wfdoc-step-action-terminate-instance)
+ [WaitForAction](#wfdoc-step-action-waitfor)
+ [WaitForSSMAgent](#wfdoc-step-action-wait-for-ssm-agent)

## ApplyImageConfigurations
<a name="wfdoc-step-action-apply-image-configurations"></a>

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

**預設逾時：**360 分鐘

**最大逾時：**720 分鐘

**回復：**此步驟動作沒有回復。

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | 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) | 

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| 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
<a name="wfdoc-step-action-bootstrap-container"></a>

此步驟動作會執行服務指令碼，以使用執行容器工作流程的最低需求來引導執行個體。Image Builder 使用 Systems Manager API **sendCommand**中的 來執行此指令碼。如需詳細資訊，請參閱[AWS Systems Manager 執行命令](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html)。

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

**預設逾時：**60 分鐘

**最大逾時：**720 分鐘

**回復：**此步驟動作沒有回復。

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | Constraints | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | 要引導的執行個體 ID。 | String | 是 |  | 這必須是啟動此工作流程執行個體之工作流程步驟的輸出執行個體 ID。 | 

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| 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
<a name="wfdoc-step-action-collect-image-metadata"></a>

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

EC2 Image Builder 會在啟動的 EC2 執行個體上執行 [AWS Systems Manager (Systems Manager) Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html)，以建置和測試您的映像。Image Builder 會收集有關 [Systems Manager 庫存](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-inventory.html)建置階段期間所用執行個體的其他資訊。此資訊包括作業系統 (OS) 名稱和版本，以及您作業系統報告的套件清單及其個別版本。

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

**預設逾時：**30 分鐘

**最大逾時：**720 分鐘

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

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | Constraints | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | 要套用中繼資料設定的建置執行個體。 | String | 是 |  | 這必須是啟動此工作流程建置執行個體之工作流程步驟的輸出執行個體 ID。 | 

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| osVersion | 從建置執行個體收集的作業系統名稱和版本。 | String | 
| associationId | 用於庫存收集的 Systems Manager 關聯 ID。 | String | 

**範例**

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

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

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

```
$.stepOutputs.{{CollectMetadataStep}}.osVersion
```

## CollectImageScanFindings
<a name="wfdoc-step-action-collect-findings"></a>

如果您的帳戶已啟用 Amazon Inspector，且您的管道已啟用映像掃描，此步驟動作會收集 Amazon Inspector 為您的測試執行個體回報的映像掃描問題清單。此步驟動作不適用於建置工作流程。

**預設逾時：**120 分鐘

**最大逾時：**720 分鐘

**回復：**此步驟動作沒有回復。

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | Constraints | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | 執行掃描之執行個體的 ID。 | String | 是 |  | 這必須是啟動此工作流程執行個體之工作流程步驟的輸出執行個體 ID。 | 

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| 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
<a name="wfdoc-step-action-create-img-from-inst"></a>

此步驟動作會使用 Amazon EC2 `CreateImage` API 從執行中的執行個體建立映像。在建立程序期間，步驟動作會視需要等待，以確認資源已達到正確的狀態，再繼續執行。

**預設逾時：**720 分鐘

**最大逾時：**3 天

**回復：**此步驟動作沒有回復。

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | Constraints | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | 要從中建立新映像的執行個體。 | String | 是 |  | 此步驟開始時，所提供執行個體 ID 的執行個體必須處於 running 狀態。 | 

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| imageId | 建立之映像的 AMI ID。 | String | 

**範例**

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

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

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

```
$.stepOutputs.{{CreateImageFromInstance}}.imageId
```

## DistributeImage
<a name="wfdoc-step-action-distribute-image"></a>

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

**預設逾時：**360 分鐘

**最大逾時：**720 分鐘

**回復：**此步驟動作沒有回復。

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | Constraints | 
| --- | --- | --- | --- | --- | --- | 
| region | 要分發映像的區域清單。 | String | 是 |  | 長度下限為 1。長度上限為 1024。 | 
| name | 分佈組態的名稱。 | String | 否 |  |  | 
| description | 分佈組態的分佈。 | String | 否 |  |  | 
| targetAccountIds | 要分發映像的帳戶 IDs。 | 陣列 | 否 |  |  | 
| amiTags | 分佈組態的標籤。 | Map | 否 |  |  | 
| kmsKeyId | 要套用至分散式映像的 KMS 金鑰。 | String | 否 |  |  | 

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| 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
<a name="wfdoc-step-action-exec-components"></a>

此步驟動作會針對正在建置的目前映像，執行配方中指定的元件。建置工作流程會在建置執行個體上執行建置元件。測試工作流程只會在測試執行個體上執行測試元件。

Image Builder 使用 Systems Manager API **sendCommand**中的 來執行元件。如需詳細資訊，請參閱[AWS Systems Manager 執行命令](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html)。

**預設逾時：**720 分鐘

**最大逾時：**1 天

**回復：**此步驟動作沒有回復。

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | Constraints | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | 元件應執行的執行個體 ID。 | String | 是 |  | 這必須是啟動此工作流程執行個體之工作流程步驟的輸出執行個體 ID。 | 

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| 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
<a name="wfdoc-step-action-exec-state-machine"></a>

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

如需詳細資訊，請參閱《 *AWS Step Functions 開發人員指南*[》中的了解 Step Functions 中的狀態機器](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-statemachines.html)。

**預設逾時：**6 小時

**最大逾時：**24 小時

**回復：**此步驟動作沒有回復。

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | Constraints | 
| --- | --- | --- | --- | --- | --- | 
| stateMachineArn | 要執行之 Step Functions 狀態機器的 ARN。 | String | 是 |  | 必須是有效的狀態機器 ARN。 | 
| input | 要提供給狀態機器的 JSON 輸入資料。 | String | 否 | {} | 必須是有效的 JSON 字串，長度上限為：16 KiB。 | 

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| executionArn | 狀態機器執行的 ARN。 | String | 
| output | 狀態機器執行的輸出。 | 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
<a name="wfdoc-step-action-launch-instance"></a>

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

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

**預設逾時：**75 分鐘

**最大逾時：**720 分鐘

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

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | Constraints | 
| --- | --- | --- | --- | --- | --- | 
| imageIdOverride | 用來啟動執行個體的映像 | String | 否 | 組建階段：映像配方基礎映像<br />測試階段：從建置階段輸出 AMI | 必須是有效的 AMI ID | 
| instanceTypesOverride | Image Builder 會嘗試清單中的每個執行個體類型，直到找到成功啟動的執行個體 | 字串的清單 | 否 | 基礎設施組態中指定的執行個體類型 | 必須是有效的執行個體類型 | 
| waitFor | 在完成工作流程步驟並繼續進行下一個步驟之前等待的條件 | String | 是 |  | Image Builder 支援 ssmAgent。 | 

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| instanceId | 啟動之執行個體的執行個體 ID。 | String | 

**範例**

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

```
- name: {{LaunchStep}}
  action: LaunchInstance
  onFailure: Abort
  inputs:
    waitFor: ssmAgent
```

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

```
$.stepOutputs.{{LaunchStep}}.instanceId
```

## ModifyImageAttributes
<a name="wfdoc-step-action-modify-image-attributes"></a>

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

**預設逾時：**120 分鐘

**最大逾時：**180 分鐘

**回復：**此步驟動作沒有回復。

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | Constraints | 
| --- | --- | --- | --- | --- | --- | 
| region | 影像的區域。 | String | 是 |  |  | 
| launchPermission |  |  | 否 |  |  | 
| launchPermission：userIds | 在映像的啟動許可中要修改的使用者 IDs。 | String | 否 |  |  | 
| launchPermission：userGroups | 在映像的啟動許可中要修改的使用者群組。 | String | 否 |  |  | 
| launchPermission：organizationArns | 在映像的啟動許可中要修改 AWS 的組織 ARNs。 | String | 否 |  |  | 
| launchPermission：organizationalUnitArns | 在映像的啟動許可中要修改 AWS 的組織單位 ARNs。 | String | 否 |  |  | 

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| 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
<a name="wfdoc-step-action-register-image"></a>

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

**預設逾時：**540 分鐘

**最大逾時：**720 分鐘

**回復：**此步驟動作沒有回復。

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | 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 時，標籤會包含如下：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/imagebuilder/latest/userguide/wfdoc-step-actions.html) | 
| 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 | 

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| imageId | 已註冊映像的 AMI ID。 | String | 

**需要 IAM 許可**

您的自訂執行角色必須具有下列許可，才能使用此步驟動作：

**允許動作**
+ `ec2:DescribeSnapshots`
+ `ec2:CreateTags`

**範例**

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

```
- 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
<a name="wfdoc-step-action-run-command"></a>

此步驟動作會為您的工作流程執行命令文件。Image Builder 會使用 Systems Manager API **sendCommand**中的 為您執行。如需詳細資訊，請參閱[AWS Systems Manager 執行命令](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html)。

**預設逾時：**720 分鐘

**最大逾時：**720 分鐘

**回復：**此步驟動作沒有回復。

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


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

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| 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
<a name="wfdoc-step-action-run-sysprep"></a>

此步驟動作會使用 Systems Manager API **sendCommand**中的 ，在建置執行個體關閉快照之前執行 Windows 執行個體`AWSEC2-RunSysprep`的文件。這些動作遵循[AWS 強化和清理映像的最佳實務](https://aws.amazon.com/articles/public-ami-publishing-hardening-and-clean-up-requirements/)。

**預設逾時：**60 分鐘

**最大逾時：**720 分鐘

**回復：**此步驟動作沒有回復。

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | Constraints | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | 要執行AWSEC2-RunSysprep文件的執行個體 ID。 | String | 是 |  | 這必須是啟動此工作流程執行個體之工作流程步驟的輸出執行個體 ID。 | 

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| 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
<a name="wfdoc-step-action-sanitize-instance"></a>

此步驟動作會在建置執行個體關閉快照之前，為 Linux 執行個體執行建議的淨化指令碼。淨化指令碼有助於確保最終映像遵循安全最佳實務，並移除不應傳遞至快照的建置成品或設定。如需指令碼的詳細資訊，請參閱 [必要的建置後清除](security-best-practices.md#post-build-cleanup)。此步驟動作不適用於容器映像。

Image Builder 使用 Systems Manager API **sendCommand**中的 來執行此指令碼。如需詳細資訊，請參閱[AWS Systems Manager 執行命令](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html)。

**預設逾時：**60 分鐘

**最大逾時：**720 分鐘

**回復：**此步驟動作沒有回復。

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | Constraints | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | 要淨化的執行個體 ID。 | String | 是 |  | 這必須是啟動此工作流程執行個體之工作流程步驟的輸出執行個體 ID。 | 

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| 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
<a name="wfdoc-step-action-terminate-instance"></a>

此步驟動作會使用做為輸入傳入的執行個體 ID 來終止執行個體。

**預設逾時：**30 分鐘

**最大逾時：**720 分鐘

**回復：**此步驟動作沒有回復。

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | Constraints | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | 要終止的執行個體 ID。 | String | 是 |  |  | 

**輸出：**此步驟動作沒有輸出。

**範例**

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

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

## WaitForAction
<a name="wfdoc-step-action-waitfor"></a>

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

**預設逾時：**3 天

**最大逾時：**7 天

**回復：**此步驟動作沒有回復。

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


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

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| 動作 | SendWorkflowStepAction API 動作傳回的動作。 | 字串 (RESUME 或 STOP) | 
| reason | 傳回動作的原因。 | String | 

**需要 IAM 許可**

您的自訂執行角色必須具有下列許可，才能使用此步驟動作：

**允許動作**
+ `lambda:InvokeFunction`

**指定資源**
+ `arn:aws:lambda:{{us-west-2}}:{{111122223333}}:function:{{function-name}}`
+ `arn:aws:lambda:{{us-west-2}}:{{111122223333}}:function:*`

**範例**

使用 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
<a name="wfdoc-step-action-wait-for-ssm-agent"></a>

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

**預設逾時：**60 分鐘

**最大逾時：**180 分鐘

**回復：**此步驟動作沒有回復。

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


| 輸入名稱 | 說明 | Type | 必要 | 預設 | Constraints | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | 要監控 SSM 連線的執行個體 ID。 | String | 是 |  | 必須是有效的 EC2 執行個體 ID | 

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


| 輸出名稱 | 說明 | Type | 
| --- | --- | --- | 
| status | SSM Agent 的連線狀態。 | String | 

**範例**

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

```
- name: {{WaitForInstanceAfterReboot}}
  action: WaitForSSMAgent
  onFailure: Abort
  timeoutInSeconds: 900
  inputs:
    instanceId.$: $.stepOutputs.LaunchStep.instanceId
```

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

```
$.stepOutputs.{{WaitForInstanceAfterReboot}}.Status
```