

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# YAML ワークフロードキュメントを作成する
<a name="image-workflow-create-document"></a>

YAML 形式の定義ドキュメントでは、イメージビルドプロセスのビルド段階とテスト段階の入力、出力、ワークフローのステップを設定します。標準化されたステップを含むテンプレートから始めることも、ゼロから始めて独自のワークフローを定義することもできます。テンプレートを使用するかゼロから始めるかにかかわらず、ワークフローをニーズに合わせてカスタマイズできます。

## YAML ワークフロードキュメントの構造
<a name="workflow-document-structure"></a>

Image Builder がイメージビルドとテストアクションを実行するために使用する YAML ワークフロードキュメントは、次のように構成されています。
+ [ワークフロードキュメントの識別](#wfdoc-struct-ident)
+ [ワークフロードキュメントの入力パラメータ](#wfdoc-struct-param)
+ [ワークフロードキュメントのステップ](#wfdoc-struct-step)
+ [ワークフロードキュメントの出力](#wfdoc-struct-output)

### ワークフロードキュメントの識別
<a name="wfdoc-struct-ident"></a>

ワークフローを一意に識別します。このセクションは次の属性を含むことができます。


|  フィールド  |  説明  |  タイプ  |  必須  | 
| --- | --- | --- | --- | 
|  名前  |  ワークフロードキュメントの名前。  |  String  |  いいえ  | 
|  説明  |  ドキュメントの説明。  |  String  |  いいえ  | 
|  schemaVersion  |  ドキュメントのスキーマバージョン。現在は 1.0。  |  String  |  はい  | 

**例**

```
---
name: sample-test-image
description: Workflow for a sample image, with extra configuration options exposed through workflow parameters.
schemaVersion: 1.0
```

### ワークフロードキュメントの入力パラメータ
<a name="wfdoc-struct-param"></a>

ワークフロードキュメントのこの部分では、呼び出し側が指定できる入力パラメータを定義します。パラメータがない場合、このセクションは省略できます。パラメータを指定する場合、各パラメータには以下の属性を含めることができます。


|  フィールド  |  説明  |  タイプ  |  必須  |  制約  | 
| --- | --- | --- | --- | --- | 
|  名前  |  パラメータの名前。  |  String  |  はい  |    | 
|  説明  |  パラメータの説明。  |  String  |  不可  |    | 
|  デフォルト  |  値が指定されていない場合のパラメータのデフォルト値。パラメータ定義にデフォルト値を含めない場合、ランタイム時にパラメータ値が必要になります。  |  パラメータのデータ型に一致します。  |  不可  |    | 
|  型  |  パラメータのデータ型。パラメータ定義にデフォルト値を含めない場合、パラーメータ型のデフォルトはランタイム時に必要な文字列値になります。  |  String  |  はい  |  パラメータのデータ型は、次のいずれかである必要があります。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/image-workflow-create-document.html)  | 

**例**

ワークフロードキュメントでパラメータを指定します。

```
parameters:
  - name: waitForActionAtEnd
    type: boolean
    default: true
    description: "Wait for an external action at the end of the workflow"
```

ワークフロードキュメントでパラメータ値を使用します。

```
$.parameters.waitForActionAtEnd
```

### ワークフロードキュメントのステップ
<a name="wfdoc-struct-step"></a>

ワークフローに最大 15 のステップアクションを指定します。ステップは、ワークフロードキュメント内で定義されている順序で実行されます。失敗した場合、ロールバックは逆の順序で実行されます。失敗したステップから始まり、前のステップまでさかのぼって実行されます。

各ステップは、前のステップアクションの出力を参照できます。これをチェーニング、または参照と呼びます。前のステップアクションの出力を参照するには、JSONPath セレクターを使用できます。例えば、次のようになります。

```
$.stepOutputs.step-name.output-name
```

詳細については、「[ワークフロードキュメントでは動的変数を使用します](wfdoc-dynamic-vars.md)」を参照してください。

**注記**  
ステップ自体には出力属性はありませんが、ステップアクションからの出力はすべてステップの `stepOutput` に含まれます。

各ステップには、次の属性を含めることができます。


|  フィールド  |  説明  |  タイプ  |  必須  |  デフォルトの 値  |  制約  | 
| --- | --- | --- | --- | --- | --- | 
|  action  |  このステップが実行するワークフローアクション。  |  String  |  はい  |    |  Image Builder ワークフロードキュメントでサポートされているステップアクションである必要があります。  | 
|  `if`、その後に `if` オペレータを変更する一連の条件ステートメントが続きます。  |  条件ステートメントは、ワークフローステップの本文に制御フローの決定ポイントを追加します。  |  dict  |  不可  |    |  Image Builder は、`if` 演算子の修飾子として以下の条件ステートメントをサポートしています。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/image-workflow-create-document.html)  | 
|  説明  |  手順の説明。  |  String  |  不可  |    |  空の文字列は使用できません。含める場合、長さは 1～1024 文字である必要があります。  | 
|  入力  |  ステップアクションの実行に必要なパラメータが含まれます。キー値は静的な値として指定することも、正しいデータ型に解決される JSONPath 変数で指定することもできます。  |  dict  |  はい  |    |    | 
|  名前  |  ステップの名前。この名前はワークフロードキュメント内で一意である必要があります。  |  String  |  はい  |    |  長さは 3～128 文字にする必要があります。 英数字と `_` を含めることができます。スペースは使用できません。  | 
|  onFailure  |  ステップが失敗した場合に実行するアクションを次のように構成します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/image-workflow-create-document.html)  |  String  |  不可  |  `Abort`  |  `Abort` \$1 `Continue`  | 
|  rollbackEnabled  |  障害が発生した場合にステップをロールバックするかどうかを設定します。静的なブール値を使用するか、ブール値に解決される動的な JSONPath 変数を使用できます。  |  ブール値  |  不可  |  `true`  |  `true` \$1 `false` \$1 または true または false に解決される JSONPath 変数。 | 
|  timeoutSeconds  |  再試行が適用される場合に、ステップが失敗して再試行されるまでの最大実行時間 (秒単位)。  |  整数  |  不可  |  該当する場合、ステップアクションに定義されているデフォルトによって異なります。  |  ステップアクションの最大タイムアウトを超えることはできません  | 
|  waitSeconds  |  ステップ実行が一時停止する秒単位の時間。  |  整数  |  不可  |  0  |  ステップアクションの timeoutSeconds を超えることはできません  | 

**例**

```
steps:
  - name: LaunchTestInstance
    action: LaunchInstance
    onFailure: Abort
    inputs:
      waitFor: "ssmAgent"

  - name: ApplyTestComponents
    action: ExecuteComponents
    onFailure: Abort
    inputs:
      instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId"

  - name: TerminateTestInstance
    action: TerminateInstance
    onFailure: Continue
    inputs:
      instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId"

  - name: WaitForActionAtEnd
    action: WaitForAction
    if:
      booleanEquals: true
      value: "$.parameters.waitForActionAtEnd"
```

### ワークフロードキュメントの出力
<a name="wfdoc-struct-output"></a>

ワークフローの出力を定義します。各出力は、出力の名前と値を指定するキーと値のペアです。出力を使用してランタイム時に後続のワークフローで使用できるデータをエクスポートできます。このセクションはオプションです。

定義する各出力には以下の属性が含まれます。


|  フィールド  |  説明  |  タイプ  |  必須  | 
| --- | --- | --- | --- | 
|  名前  |  出力の名前。名前は、パイプラインに含めるワークフロー間で一意である必要があります。  |  String  |  はい  | 
|  値  |  出力の値。文字列の値は、ステップアクションからの出力ファイルなどの動的変数でもかまいません。詳細については、「[ワークフロードキュメントでは動的変数を使用します](wfdoc-dynamic-vars.md)」を参照してください。  |  String  |  はい  | 

**例**

`createProdImage` ステップからのステップ出力を含むワークフロードキュメントの出力イメージ ID を作成します。

```
outputs:
  - name: 'outputImageId'
    value: '$.stepOutputs.createProdImage.imageId'
```

次のワークフローのワークフロー出力を参照してください。

```
$.workflowOutputs.outputImageId
```

# ワークフロードキュメントでサポートされているステップアクション
<a name="wfdoc-step-actions"></a>

このセクションには、Image Builder がサポートするステップアクションの詳細が含まれています。このセクションで使用する用語

AMI  
Amazon マシンイメージ

ARN  
Amazon リソースネーム

**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>

このステップアクションは、ライセンス設定、起動テンプレート設定、S3 エクスポート設定、EC2 Fast Launch 設定、Systems Manager AMIs に適用します。設定は、クロスアカウントに適用できる SSM パラメータ設定を除き、ソースアカウントの分散イメージにのみ適用されます。

**デフォルトのタイムアウト: **360 分

**最大タイムアウト: **720 分

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| リージョン | イメージリージョン。 | String | はい |  |  | 
| licenseConfigurationArns | イメージのライセンス設定 ARN。 | 配列 | 不可 |  |  | 
| launchTemplateConfigurations |  | 配列 | 不可 |  |  | 
| launchTemplateConfigurations:launchTemplateId | イメージに適用する起動テンプレート ID。 | String | launchTemplateConfigurations が指定されている場合、はい |  |  | 
| launchTemplateConfigurations:accountId | イメージに適用する起動テンプレートアカウント IDs。 | String | 不可 |  |  | 
| launchTemplateConfigurations:setDefaultVersion | イメージの起動テンプレートのデフォルトバージョン設定。 | ブール値 | 不可 |  |  | 
| s3ExportConfiguration |  | 配列 | 不可 |  |  | 
| s3ExportConfiguration:roleName | イメージの S3 エクスポート設定ロール名。 | String | s3ExportConfiguration が指定されている場合、はい |  |  | 
| s3ExportConfiguration:diskImageFormat | イメージの S3 エクスポート設定ディスクイメージ形式。 | String | s3ExportConfiguration が指定されている場合、はい |  | 許可される値 - VMDK\$1RAW\$1VHD | 
| s3ExportConfiguration:s3Bucket | イメージの S3 エクスポート設定バケット名。 | String | s3ExportConfiguration が指定されている場合、はい |  |  | 
| s3ExportConfiguration:s3Prefix | イメージの S3 エクスポート設定バケットプレフィックス。 | String | 不可 |  |  | 
| fastLaunchConfigurations | イメージの EC2 Fast Launch 設定。 | 配列 | 不可 |  |  | 
| fastLaunchConfigurations:enabled |  イメージに対する EC2 Fast Launch の有効化/無効化。 | ブール値 | fastLaunchConfigurations が指定されている場合、はい |  |  | 
| fastLaunchConfigurations:snapshotConfiguration |  イメージに対する EC2 Fast Launch の有効化/無効化。 | マッピング | 不可 |  |  | 
| fastLaunchConfigurations:snapshotConfiguration:targetResourceCount | イメージの EC2 Fast Launch ターゲットリソース数。 | 整数 | 不可 |  |  | 
| fastLaunchConfigurations:maxParallelLaunches | イメージの EC2 Fast Launch 最大並列起動数。 | 整数 | 不可 |  |  | 
| 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 パラメータ設定。 | マッピング | 不可 |  |  | 
| ssmParameterConfigurations:amiAccountId | イメージの SSM パラメータ AMI アカウント ID。 | String | 不可 |  |  | 
| ssmParameterConfigurations:parameterName | イメージの SSM パラメータ名。 | String | ssmParameterConfigurations が指定されている場合、はい |  |  | 
| ssmParameterConfigurations:dataType | イメージの SSM パラメータデータ型。 | String | 不可 |  | 使用できる値 - text\$1aws:ec2:image) | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| configuredImages | 設定済みイメージのリスト。 | 配列 | 
| configuredImages:accountId | 分散イメージの送信先アカウント ID。 | String | 
| configuredImages:name | AMI の名前。 | String | 
| configuredImages:amiId | 分散イメージの AMI ID。 | String | 
| configuredImages:dateStarted | ディストリビューションが開始された UTC 時間。 | String | 
| configuredImages:dateStopped | ディストリビューションが完了した UTC 時間。 | String | 
| configuredImages:step | ディストリビューションが停止したステップ。 | Completed\$1AssociateLicensesRunning\$1UpdateLaunchTemplateRunning\$1PutSsmParametersRunning\$1UpdateFastLaunchConfiguration\$1ExportAmiQueued\$1ExportAmiRunning | 
| configuredImages:region | 分散イメージの傾向 AWS  | String | 
| configuredImages:status | ディストリビューションステータス。 | Completed\$1Failed\$1Cancelled\$1TimedOut | 
| 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 Run Command](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html)」を参照してください。

**注記**  
ブートストラップスクリプトは、Image Builder が Docker コンテナを正常に構築するための前提条件である AWS CLI および Docker パッケージをインストールします。このステップアクションを含めないと、イメージビルドは失敗する可能性があります。

**デフォルトタイムアウト: **60 分

**最大タイムアウト: **720 分

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | ブートストラップするインスタンスの ID。 | String | はい |  | これは、このワークフローのインスタンスを起動したワークフローステップの出力インスタンス ID でなければなりません。 | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| 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
<a name="wfdoc-step-action-collect-image-metadata"></a>

このステップアクションはビルドワークフローでのみ有効です。

EC2 Image Builder は、イメージを構築してテストするために、起動した EC2 インスタンスで [AWS Systems Manager (Systems Manager) エージェント](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) の名前とバージョン、オペレーティングシステムによって報告されたパッケージとそれぞれのバージョンのリストが含まれます。

**注記**  
このステップアクションは AMI を作成するイメージにのみ有効です。

**デフォルトタイムアウト: **30 分

**最大タイムアウト: **720 分

**ロールバック:**Image Builder は、このステップで作成された Systems Manager リソースをすべてロールバックします。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | メタデータ設定を適用するビルドインスタンス。 | String | はい |  | これは、このワークフローのビルドインスタンスを起動したワークフローステップの出力インスタンス ID でなければなりません。 | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| 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 分

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | スキャンが実行されたインスタンスの ID。 | String | はい |  | これは、このワークフローのインスタンスを起動したワークフローステップの出力インスタンス ID でなければなりません。 | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| 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
<a name="wfdoc-step-action-create-img-from-inst"></a>

このステップアクションは、Amazon EC2 `CreateImage` API を使用して実行中のインスタンスからイメージを作成します。作成プロセス中、ステップアクションは必要に応じてリソースが正しい状態になったことを確認してから続行します。

**デフォルトタイムアウト: **720 分

**最大タイムアウト: **3 日間

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | 新しいイメージを作成するインスタンス。 | String | はい |  | 指定したインスタンス ID のインスタンスは、このステップの開始時点の running 状態にある必要があります。 | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| 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 分

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| リージョン | イメージを配布するリージョンのリスト。 | String | はい |  | 最小長は 1 です｡ 最大長は 1,024 です。 | 
| 名前 | ディストリビューション設定の名前。 | String | いいえ |  |  | 
| 説明 | ディストリビューション設定のディストリビューション。 | String | 不可 |  |  | 
| targetAccountIds | イメージを配布するアカウント IDs。 | 配列 | 不可 |  |  | 
| amiTags | ディストリビューション設定のタグ。 | マッピング | 不可 |  |  | 
| kmsKeyId | 分散イメージに適用する KMS キー。 | String | 不可 |  |  | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| distributedImages | 分散イメージのリスト | 配列 | 
| distributedImages:region | 分散イメージの Tne 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 | ディストリビューションステータス。 | Completed\$1Failed\$1Cancelled\$1TimedOut | 
| distributedImages:step | ディストリビューションが停止したステップ。 | 完了\$1CopyAmiRunning | 
| 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 Run Command](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html)」を参照してください。

**デフォルトタイムアウト: **720 分

**最大タイムアウト: **1 日

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | コンポーネントを実行する必要のあるインスタンスの ID。 | String | はい |  | これは、このワークフローのインスタンスを起動したワークフローステップの出力インスタンス ID でなければなりません。 | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| 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
```

## ExecuteStateMachine
<a name="wfdoc-step-action-exec-state-machine"></a>

このステップアクションは、Image Builder ワークフローから AWS Step Functions ステートマシンの実行を開始します。Image Builder は Step Functions `StartExecution` API を使用してステートマシンを開始し、完了するのを待ちます。これは、複雑なワークフロー、コンプライアンス検証、または認証プロセスをイメージ構築パイプラインに統合するのに役立ちます。

詳細については、[「 デベロッパーガイド」の「Step Functions でステートマシンについて学ぶ](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-statemachines.html)」を参照してください。 *AWS Step Functions *

**デフォルトのタイムアウト: **6 時間

**最大タイムアウト: **24 時間

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| stateMachineArn | 実行する Step Functions ステートマシンの ARN。 | String | はい |  | 有効なステートマシン ARN である必要があります。 | 
| input | ステートマシンに提供する JSON 入力データ。 | String | 不可 | \$1\$1 | 有効な JSON 文字列である必要があります。最大長は 16 KiB です。 | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| 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 分

**ロールバック: **ビルドインスタンスの場合、ロールバックはインフラストラクチャ設定リソースで設定したアクションを実行します。デフォルトでは、イメージの作成に失敗するとビルドインスタンスは終了します。ただし、インフラストラクチャ設定には、ビルドインスタンスをトラブルシューティング用に保持する設定があります。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| imageIdOverride | インスタンスの起動に使用するイメージ | String | 不可 |  ビルドステージ: イメージレシピベースイメージ テストステージ: ビルドステージから AMI を出力する  | 有効な AMI ID である必要があります | 
| instanceTypesOverride | Image Builder は、正常に起動するインスタンスタイプが見つかるまで、リスト内の各インスタンスタイプを試行します。 | 文字列のリスト | 不可 | インフラストラクチャ設定で指定されたインスタンスタイプ | 有効なインスタンスタイプである必要があります | 
| waitFor | ワークフローステップを完了し、次のステップに進む前に待機する条件 | String | はい |  | Image Builder は、ssmAgent をサポートしています。 | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| 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 分

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| リージョン | イメージのリージョン。 | String | はい |  |  | 
| launchPermission |  |  | 不可 |  |  | 
| launchPermission:userIds | イメージの起動アクセス許可で変更するユーザー IDs。 | String | 不可 |  |  | 
| launchPermission:userGroups | イメージの起動アクセス許可で変更するユーザーグループ。 | String | 不可 |  |  | 
| launchPermission:organizationArns | イメージの起動アクセス許可で変更する AWS 組織 ARNs。 | String | 不可 |  |  | 
| launchPermission:organizationalUnitArns | イメージの起動アクセス許可で変更する AWS 組織単位 ARNs。 | String | 不可 |  |  | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| modifiedImages | 変更されたイメージのリスト | 配列 | 
| modifiedImages:accountId | 分散イメージの送信先アカウント ID。 | String | 
| modifiedImages:name | AMI の名前。 | String | 
| modifiedImages:amiId | 分散イメージの AMI ID。 | String | 
| modifiedImages:dateStarted | ディストリビューションが開始された UTC 時間。 | String | 
| modifiedImages:dateStopped | ディストリビューションが完了した UTC 時間。 | String | 
| modifiedImages:step | ディストリビューションが停止したステップ。 | 完了\$1ModifyAmiRunning | 
| modifiedImages:region | イメージの Tne AWS リージョン。 | String | 
| modifiedImages:status | ディストリビューションステータス。 | Completed\$1Failed\$1Cancelled\$1TimedOut | 
| 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 マシンイメージ (AMI) RegisterImage を登録します。これにより、既存のスナップショットまたはスナップショットのセットから AMI を作成し、さまざまなイメージ属性を指定できます。

**デフォルトのタイムアウト: **540 分

**最大タイムアウト: **720 分

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| アーキテクチャ | AMI のアーキテクチャ。 | String | 不可 |  | 有効な値: i386、x86\$164、arm64、x86\$164\$1mac、arm64\$1mac | 
| blockDeviceMapping | AMI のブロックデバイスマッピングエントリ。 | 配列 | 不可 |  |  | 
| bootMode | AMI のブートモード。 | String | 不可 |  | 有効な値: legacy-bios、uefi、uefi-preferred | 
| 説明 | AMI の説明。 | String | 不可 |  |  | 
| enaSupport | ENA による拡張ネットワーキングが有効になっているかどうか。 | ブール値 | 不可 |  |  | 
| imageLocation | AMI マニフェストの場所。 | String | 不可 |  | S3-backed AMIs に必須 | 
| imdsSupport | IMDSv2 サポートレベル。 | String | 不可 |  | 有効な値: v2.0 | 
| includeSnapshotTags | ブロックデバイスマッピングで定義された最初のスナップショットのタグを含めるかどうか。 | ブール値 | 不可 | FALSE |  true に設定すると、タグは次のように含まれます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/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、準仮想 | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| 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 Run Command](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html)」を参照してください。

**デフォルトタイムアウト: **720 分

**最大タイムアウト: **720 分

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | コマンドドキュメントを実行するインスタンスの ID。 | String | はい |  | これは、このワークフローのインスタンスを起動したワークフローステップの出力インスタンス ID でなければなりません。 | 
| documentName | 実行する Systems Manager コマンドドキュメントの名前。 | String | はい |  |  | 
| パラメータ | コマンドドキュメントに必要なすべてのパラメータのキーと値のペアのリスト。 | dictionary<string, list<string>> | 条件付き |  |  | 
| documentVersion | 実行するコマンドドキュメントのバージョン。 | String | 不可 | \$1DEFAULT |  | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| 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
<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 分

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | AWSEC2-RunSysprep ドキュメントを実行するインスタンスの ID。 | String | はい |  | これは、このワークフローのインスタンスを起動したワークフローステップの出力インスタンス ID でなければなりません。 | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| 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
<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 Run Command](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html)」を参照してください。

**デフォルトタイムアウト: **60 分

**最大タイムアウト: **720 分

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | サニタイズするインスタンスの ID。 | String | はい |  | これは、このワークフローのインスタンスを起動したワークフローステップの出力インスタンス ID でなければなりません。 | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| 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
<a name="wfdoc-step-action-terminate-instance"></a>

このステップアクションは、入力として渡されたインスタンス ID でインスタンスを終了します。

**デフォルトタイムアウト: **30 分

**最大タイムアウト: **720 分

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | 終了するインスタンスの ID。 | String | はい |  |  | 

**出力: **このステップアクションには出力がありません。

**例**

ワークフロードキュメントでステップアクションを指定します。

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

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

このステップアクションは、実行中のワークフローを一時停止し、Image Builder **SendWorkflowStepAction** API アクションからの外部アクションの受信を待ちます。このステップは、EventBridge イベントをデフォルトの EventBridge イベントバスに詳細タイプ `EC2 Image Builder Workflow Step Waiting` で公開します。ステップは、SNS トピック ARN を指定した場合は SNS 通知を送信し、Lambda 関数名を指定した場合は Lambda 関数を非同期的に呼び出すこともできます。

**デフォルトタイムアウト: **3 日

**最大タイムアウト: **7 日間

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| snsTopicArn | ワークフローステップが保留になっているときに通知を送信するオプションの SNS トピック ARN。 | String | 不可 |  |  | 
| lambdaFunctionName | ワークフローステップが保留中のときに非同期的に呼び出す Lambda 関数のオプションの名前または ARN。 | String | 不可 |  |  | 
| payload | SNS のメッセージとして使用される JSON 文字列と Lambda のペイロード。指定した場合、カスタムペイロードはデフォルトのメッセージ/ペイロードでラップされ、それぞれ SNS と Lambda に使用されます。指定しない場合、 はデフォルトのメッセージ/ペイロードを生成します。 | String | 不可 |  | 有効な JSON 文字列、最大 16 KiB である必要があります | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| action | SendWorkflowStepAction API アクションが返すアクション。 | 文字列 (RESUME または STOP) | 
| 理由 | 反されたアクションの理由。 | 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 管理可能になるまで待機します。これは、システムの再起動、OS のアップグレード、SSM からインスタンスを一時的に切断するプラットフォーム固有のオペレーションなど、インスタンスの中断が既知のワークフローに特に役立ちます。Image Builder は、SSM 接続が回復するかタイムアウトするまでインスタンスをモニタリングします。

**デフォルトタイムアウト: **60 分

**最大タイムアウト: **180 分

**ロールバック: **このステップアクションにはロールバックはありません。

**インプット: **以下の表には、このステップアクションでサポートされる入力が含まれています。


| 入力名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 制約 | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | SSM 接続をモニタリングするインスタンスの ID。 | String | はい |  | 有効な EC2 インスタンス ID である必要があります | 

**出力: **次の表には、このステップアクションの出力が含まれています。


| 出力名 | 説明 | タイプ | 
| --- | --- | --- | 
| ステータス | SSM エージェントの接続ステータス。 | String | 

**例**

ワークフロードキュメントでステップアクションを指定します。

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

ワークフロードキュメント内のステップアクション値の出力を使用します。

```
$.stepOutputs.WaitForInstanceAfterReboot.Status
```

# ワークフロードキュメントでは動的変数を使用します
<a name="wfdoc-dynamic-vars"></a>

ワークフロードキュメントで動的変数を使用して、イメージ作成プロセスのランタイム時に変化する値を表すことができます。動的変数の文字列補間を使用すると、JSON 文字列などの構造化コンテンツ内に JSONPath 式を埋め込むことができます。これは、複雑なペイロード内のランタイム値を `ExecuteStateMachine`や などのステップアクションに渡す必要がある場合に特に便利です`WaitForAction`。

動的変数に文字列補間を使用するには、文字列コンテンツ`"{{...}}"`内の二重中括弧で JSONPath 式をラップします。二重中括弧でラップされた JSONPath 式のみが変数として処理されます。二重中括弧でラップされていない JSONPath 式は、リテラル文字列コンテンツとして扱われます。

**JSONPath 動的ワークフロー変数構文**

```
$.<document structure>.[<step name>.]<variable name>
```

動的変数値は、ターゲット変数を一意に識別する構造ノードを備えた JSONPath セレクターとして表されます。ルート (\$1) の後の最初のノードは、`stepOutputs` または Image Builder システム変数の場合は、`imageBuilder` などのワークフロードキュメント構造を表します。以下のリストには、サポートされている JSONPath ワークフロードキュメント構造ノードが含まれています。

**ドキュメント構造ノード**
+ parameters – ワークフローパラメータ
+ stepOutputs – 同じワークフロードキュメント内のステップからの出力
+ workflowOutputs – すでに実行されているワークフロードキュメントからの出力
+ imagebuilder – Image Builder システム変数

`parameters` および `stepOutputs` ドキュメント構造ノードには、ステップ名のオプションノードが含まれます。これにより、すべてのステップで変数名が一意になるようになります。

JSONPath の最後のノードは、`instanceId` などのターゲット変数の名前です。

各ステップは、これらの JSONPath 動的変数を備えた前のステップアクションの出力を参照できます。これをチェーニング、または参照とも呼びます。前のステップアクションの出力を参照するには、次の動的変数を使用できます。

```
$.stepOutputs.step-name.output-name
```

**重要**  
入力パラメータが動的変数を参照する場合、連鎖インジケータ (`.$`) をパラメータ名の末尾にアタッチする必要があります。

**例 1: 入力パラメータ連鎖インジケータ**

次の例は、文字列補間を使用して実行時にパラメータ値の動的変数を解決する入力パラメータを示しています。

```
  - name: ApplyTestComponents
    action: ExecuteComponents
    onFailure: Abort
    inputs:
      instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId"
```

**例 2: 動的変数の文字列補間**

次の例は、動的変数が文字列補間を使用して実行時に値を決定する方法を示しています。

```
- name: ValidateImageConfiguration
  action: ExecuteStateMachine
  inputs:
    stateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:ImageValidation
    input: |
      {
        "imageId": "{{ $.stepOutputs.CreateImageFromInstance.imageId }}",
        "region": "us-east-1",
        "buildDate": "{{ $.imagebuilder.dateTime }}",
        "instanceType": "{{ $.stepOutputs.LaunchStep.instanceType }}"
      }
```

この例では、二重中括弧でラップされた JSONPath 式は実行時に解決されます。
+ `{{ $.stepOutputs.CreateImageFromInstance.imageId }}` - CreateImageFromInstance ステップから実際のイメージ ID を解決します
+ `{{ $.imagebuilder.dateTime }}` - 現在のビルドタイムスタンプを解決します。使用できる Image Builder システム変数のリスト[Image Builder システム変数を使用する](#wfdoc-ib-vars)については、「」を参照してください。
+ `{{ $.stepOutputs.LaunchStep.instanceType }}` - LaunchStep で使用されるインスタンスタイプを解決します

のようなリテラル文字列`"region": "us-east-1"`は変更されません。

**注記**  
文字列補間は、YAML パイプ (`|`) 演算子を使用した複数行文字列など、ワークフロードキュメント内の任意の文字列コンテンツで機能します。中括弧要件は、JSONPath 変数とリテラルテキストコンテンツを明確に区別するためのエスケープメカニズムとして機能します。

## Image Builder システム変数を使用する
<a name="wfdoc-ib-vars"></a>

Image Builder には、ワークフロードキュメントで使用できる以下のシステム変数があります。


|  変数名  |  説明  |  タイプ  |  値の例  | 
| --- | --- | --- | --- | 
|  cloudWatchLogGroup  |  出力ログの CloudWatch Logs グループの名前。 形式: `/aws/imagebuilder/<recipe-name>`  |  String  |  `/aws/imagebuilder/sampleImageRecipe`  | 
|  cloudWatchLogStream  |  出力ログの CloudWatch Logs ストリームの名前。  |  String  |  *1.0.0/1*  | 
|  collectImageMetadata  |  インスタンスメタデータを収集するかどうかを Image Builder に指示する設定。  |  ブール値  |  `true` \$1 `false`  | 
|  collectImageScanFindings  |  Image Builder が画像スキャン検出結果を収集できるようにする設定の現在の値。  |  ブール値  |  `true` \$1 `false`  | 
|  imageBuildNumber  |  イメージのビルドバージョン番号。  |  整数  |  *1*  | 
|  imageId  |  ベースイメージの AMI ID。  |  String  |  *ami-1234567890abcdef1*  | 
|  imageName  |  イメージの名前。  |  String  |  *sampleImage*  | 
|  imageType  |  画像出力タイプ。  |  String  |  `AMI` \$1 `Docker`  | 
|  imageVersionNumber  |  イメージのバージョン番号。  |  String  |  *1.0.0*  | 
|  instanceProfileName  |  Image Builder がビルドインスタンスとテストインスタンスを起動するために使用するインスタンスプロファイルロールの名前。  |  String  |  *SampleImageBuilderInstanceProfileRole*  | 
|  platform  |  ビルドされたイメージのオペレーティングシステムプラットフォーム。  |  String  |  `Linux` \$1 `Windows` \$1 `MacOS`  | 
|  s3Logs  |  Image Builder が書き込む S3 ログの設定を含む JSON オブジェクト。  |  JSON オブジェクト  |  \$1's3Logs': \$1's3BucketName': '*sample-bucket*', 's3KeyPrefix': '*ib-logs*'\$1\$1  | 
|  securityGroups  |  ビルドインスタンスとテストインスタンスに適用されるセキュリティグループ ID。  |  List [String]  |  *[sg-1234567890abcdef1, sg-11112222333344445]*  | 
|  sourceImageARN  |  ワークフローがビルドステージとテストステージに使用する Image Builder イメージリソースの Amazon リソースネーム (ARN)。  |  String  |  arn:aws:imagebuilder:*us-east-1*:*111122223333*:image/*sampleImage*/*1.0.0/1*  | 
|  subnetId  |  ビルドインスタンスとテストインスタンスを起動するサブネットの ID。  |  String  |  *subnet-1234567890abcdef1*  | 
|  terminateInstanceOnFailure  |  障害発生時にインスタンスを終了するか、トラブルシューティングのために保持するよう Image Builder に指示する設定の現在の値。  |  ブール値  |  `true` \$1 `false`  | 
|  workflowPhase  |  ワークフロー実行のために実行中の現在のステージ。  |  String  |  `Build` \$1 `Test`  | 
|  workingDirectory  |  作業ディレクトリへのパス。  |  String  |  `/tmp`  | 

# ワークフローステップで条件ステートメントを使用する
<a name="wfdoc-conditional-statements"></a>

条件ステートメントは `if` ステートメントのドキュメント属性で始まります。`if` ステートメントの最終的な目的は、ステップアクションを実行するか、スキップするかを決定することです。`if` ステートメントが `true` に解決されると、ステップアクションが実行されます。`false` に解決された場合、Image Builder はステップアクションをスキップし、`SKIPPED` のステップステータスをログに記録します。

`if` ステートメントは分岐ステートメント (`and`、`or`) と条件付き修飾子 (`not`) をサポートします。また、データ型 (文字列または数値) に基づいて値の比較 (等しい、より小さい、より大きい) を実行する、次の比較演算子もサポートしています。

**サポートされている比較演算子**
+ `booleanEquals`
+ `numberEquals`
+ `numberGreaterThan`
+ `numberGreaterThanEquals`
+ `numberLessThan`
+ `numberLessThanEquals`
+ `stringEquals`

**分岐ステートメントと条件付き修飾子のルール**  
分岐ステートメント(`and`、`or`) と条件付き修飾子 (`not`) に以下のルールが適用されます。
+ 分岐ステートメントと条件付き修飾子は、単独で 1 行に表示する必要があります。
+ 分岐ステートメントと条件付き修飾子は、レベルのルールに従う必要があります。
  + 親レベルにはステートメントが 1 つしか存在できません。
  + 子ブランチまたは修飾子はそれぞれ新しいレベルを開始します。

  レベルの詳細については、「[条件ステートメントでのネストレベル](#wfdoc-conditional-structure)」を参照してください。
+ 各分岐ステートメントには少なくとも 1 つの子条件ステートメントが必要ですが、10 個以下でなければなりません。
+ 条件付き修飾子は 1 つの子条件文に対してのみ動作します。

## 条件ステートメントでのネストレベル
<a name="wfdoc-conditional-structure"></a>

条件ステートメントは、独自のセクション内の複数のレベルで動作します。例えば、`if` ステートメント属性はワークフロードキュメント内のステップ名とアクションと同じレベルに表示されます。これが条件ステートメントの基本です。

条件ステートメントのレベルは最大 4 つまで指定できますが、親レベルに表示できるのは 1 つだけです。他のすべての分岐ステートメント、条件修飾子、または条件演算子は、そこからレベルごとに 1 つずつインデントされます。

次の概要は、条件ステートメントのネストレベルの最大数を示しています。

```
base:
  parent: 
    - child (level 2)
        - child (level 3)
            child (level 4)
```

`if` 属性  
`if` 属性は、条件ステートメントをドキュメント属性として指定します。これはレベル 0 です。

親レベル  
これは条件ステートメントのネストの最初のレベルです。このレベルにはステートメントが 1 つしか存在できません。分岐や修飾子が不要な場合は、子ステートメントを含まない条件演算子でもかまいません。このレベルでは、条件演算子を除いてダッシュ表記は使用しません。

子レベル  
レベル 2～4 は子レベルとみなされます。子ステートメントには、分岐ステートメント、条件修飾子、または条件演算子を含めることができます。

**例: ネストレベル**  
次の例は、条件ステートメントのレベルの最大数を示しています。

```
if:
  and:                             #first level
    - stringEquals: 'my_string'    #second level
      value: 'my_string'
    - and:                         #also second level
        - numberEquals: '1'        #third level
          value: 1
        - not:                     #also third level
            stringEquals: 'second_string'      #fourth level
            value: "diff_string"
```

**ネストルール**
+ 子レベルのブランチまたは修飾子はそれぞれ新しいレベルを開始します。
+ 各レベルはインデントされます。
+ 親レベルには 1 つのステートメント、修飾子、または演算子を含め、最大 4 つのレベルがあり、さらに最大 3 つのレベルを追加できます。

## 条件ステートメントの例
<a name="wfdoc-conditional-examples"></a>

この一連の例は、条件ステートメントのさまざまな側面を示しています。

**分岐: and**  
`and` 分岐ステートメントは、ブランチの子である式のリストに基づいて動作します。これらの式はすべて、`true` と評価される必要があります。Image Builder は、リストに表示される順序で式を評価します。いずれかの式が `false` と評価されると、処理は停止し、分岐は `false` と見なされます。

次の例では、両方の式が `true` と評価されるため、`true` と評価されます。

```
if:
  and:
    - stringEquals: 'test_string'
      value: 'test_string'
    - numberEquals: 1
      value: 1
```

**分岐: or**  
`or` 分岐ステートメントは、ブランチの子である式のリストに基づいて動作します。これらの式の少なくとも 1 つは、`true` と評価される必要があります。Image Builder は、リストに表示される順序で式を評価します。いずれかの式が `true` と評価されると、処理は停止し、分岐は `true` と見なされます。

次の例では、最初の式が `false` であるにもかかわらず、`true` と評価されます。

```
if:
  or:
    - stringEquals: 'test_string'
      value: 'test_string_not_equal'
    - numberEquals: 1
      value: 1
```

**条件付き修飾子: not**  
`not` 条件付き修飾子は、ブランチの子である条件ステートメントを無効にします。

次の例では、`not` 修飾子が `stringEquals` 条件ステートメントを無効にした場合 `true` と評価します。

```
if:
  not:
    - stringEquals: 'test_string'
      value: 'test_string_not_equal'
```

**条件ステートメント: booleanEquals**  
`booleanEquals` 比較演算子はブール値を比較し、ブール値が完全に一致する場合は true を返します。

次の例では、`collectImageScanFindings` が有効かどうかを調べます。

```
if:
  - booleanEquals: true
    value: '$.imagebuilder.collectImageScanFindings'
```

**条件ステートメント: stringEquals**  
`stringEquals` 比較演算子は 2 つの文字列を比較し、文字列が完全に一致する場合は true を返します。いずれかの値が文字列でない場合、Image Builder は比較する前にそれを文字列に変換します。

次の例では、プラットフォームシステム変数を比較して、ワークフローが Linux プラットフォームで実行されているかどうかを判断します。

```
if:
  - stringEquals: 'Linux'
    value: '$.imagebuilder.Platform'
```

**条件ステートメント: numberEquals**  
`numberEquals` 比較演算子は 2 つの数値を比較し、数値が等しい場合は true を返します。比較する数値は、以下の形式のいずれかである必要があります。
+ 整数
+ 浮動小数点数
+ 次の正規表現パターンに一致する文字列: `^-?[0-9]+(\.)?[0-9]+$`。

次の比較の例はすべて `true` に評価されます。

```
if:
  # Value provider as a number
  numberEquals: 1
  value: '1'
  
  # Comparison value provided as a string
  numberEquals: '1'
  value: 1
  
  # Value provided as a string
  numberEquals: 1
  value: '1'
  
  # Floats are supported
  numberEquals: 5.0
  value: 5.0
  
  # Negative values are supported
  numberEquals: -1
  value: -1
```