

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Création d'un document de flux de travail YAML
<a name="image-workflow-create-document"></a>

Le document de définition du format YAML configure les étapes d'entrée, de sortie et de flux de travail pour les étapes de génération et de test du processus de création d'image. Vous pouvez partir de modèles qui incluent des étapes standardisées, ou vous pouvez partir de zéro pour définir votre propre flux de travail. Que vous utilisiez un modèle ou que vous partiez de zéro, vous pouvez personnaliser le flux de travail en fonction de vos besoins.

## Structure d'un document de flux de travail YAML
<a name="workflow-document-structure"></a>

Le document de flux de travail YAML utilisé par Image Builder pour effectuer des actions de création et de test d'images est structuré comme suit.
+ [Identification des documents relatifs au flux](#wfdoc-struct-ident)
+ [Paramètres d'entrée du document de flux de travail](#wfdoc-struct-param)
+ [Étapes du document de workflow](#wfdoc-struct-step)
+ [Sorties de documents de workflow](#wfdoc-struct-output)

### Identification des documents relatifs au flux
<a name="wfdoc-struct-ident"></a>

Identifie le flux de travail de manière unique. Cette section peut inclure les attributs suivants.


|  Champ  |  Description  |  Type  |  Obligatoire  | 
| --- | --- | --- | --- | 
|  name  |  Nom du document de flux de travail.  |  String  |  Non  | 
|  description  |  Description du document.  |  String  |  Non  | 
|  schemaVersion  |  La version du schéma du document, actuellement 1.0.  |  String  |  Oui  | 

**Exemple**

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

### Paramètres d'entrée du document de flux de travail
<a name="wfdoc-struct-param"></a>

Cette partie du document de flux de travail définit les paramètres d'entrée que l'appelant peut spécifier. Si vous n'avez aucun paramètre, vous pouvez omettre cette section. Si vous spécifiez des paramètres, chaque paramètre peut inclure les attributs suivants.


|  Champ  |  Description  |  Type  |  Obligatoire  |  Constaintes  | 
| --- | --- | --- | --- | --- | 
|  name  |  Nom du paramètre.  |  String  |  Oui  |    | 
|  description  |  Description du paramètre.  |  String  |  Non  |    | 
|  default  |  La valeur par défaut du paramètre, si aucune valeur n'est fournie. Si vous n'incluez pas de valeur par défaut dans la définition du paramètre, la valeur du paramètre est requise lors de l'exécution.  |  Correspond au type de données du paramètre.  |  Non  |    | 
|  type  |  Type de données du paramètre. Si vous n'incluez pas le type de données dans la définition du paramètre, le type de paramètre est par défaut une valeur de chaîne requise lors de l'exécution.  |  String  |  Oui  |  Le type de données du paramètre doit être l'un des suivants : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/image-workflow-create-document.html)  | 

**Exemple**

Spécifiez le paramètre dans le document de flux de travail.

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

Utilisez la valeur du paramètre dans le document de flux de travail.

```
$.parameters.waitForActionAtEnd
```

### Étapes du document de workflow
<a name="wfdoc-struct-step"></a>

Spécifie jusqu'à 15 étapes d'actions pour le flux de travail. Les étapes s'exécutent dans l'ordre dans lequel elles sont définies dans le document de flux de travail. En cas d'échec, une annulation s'exécute dans l'ordre inverse, en commençant par l'étape qui a échoué et en remontant jusqu'aux étapes précédentes.

Chaque étape peut faire référence au résultat de toute action d'étape précédente. C'est ce que l'on appelle le *chaînage ou le référencement*. Pour faire référence au résultat d'une action d'une étape précédente, vous pouvez utiliser un JSONPath sélecteur. Par exemple :

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

Pour de plus amples informations, veuillez consulter [Utiliser des variables dynamiques dans votre document de flux de travail](wfdoc-dynamic-vars.md).

**Note**  
Même si l'étape elle-même ne possède pas d'attribut de sortie, toute sortie d'une action d'étape est incluse dans `stepOutput` l'étape.

Chaque étape peut inclure les attributs suivants.


|  Champ  |  Description  |  Type  |  Obligatoire  |  Valeur par défaut  |  Constaintes  | 
| --- | --- | --- | --- | --- | --- | 
|  action  |  Action de flux de travail exécutée par cette étape.  |  String  |  Oui  |    |  Doit être une action d'étape prise en charge pour les documents de flux de travail Image Builder.  | 
|  `if`, suivi d'un ensemble d'instructions conditionnelles qui modifient l'`if`opérateur.  |  Les instructions conditionnelles ajoutent un flux de points de décision de contrôle au corps des étapes de votre flux de travail.  |  Dict  |  Non  |    |  Image Builder prend en charge les instructions conditionnelles suivantes en tant que modificateurs de l'`if`opérateur : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/image-workflow-create-document.html)  | 
|  description  |  Description de l'étape.  |  String  |  Non  |    |  Les chaînes vides ne sont pas autorisées. Si elle est incluse, la longueur doit être comprise entre 1 et 1024 caractères.  | 
|  inputs  |  Contient les paramètres nécessaires à l'exécution de l'action de l'étape. Vous pouvez spécifier des valeurs clés sous forme de valeurs statiques ou avec une JSONPath variable qui correspond au type de données approprié.  |  Dict  |  Oui  |    |    | 
|  name  |  Le nom de l'étape. Ce nom doit être unique dans le document de flux de travail.  |  String  |  Oui  |    |  La longueur doit être comprise entre 3 et 128 caractères. Peut inclure des caractères alphanumériques et. `_` Pas d'espaces.  | 
|  onFailure  |  Configure l'action à effectuer en cas d'échec de l'étape, comme suit. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/image-workflow-create-document.html)  |  String  |  Non  |  `Abort`  |  `Abort` \$1 `Continue`  | 
|  Rollback activé  |  Configure si l'étape sera annulée en cas d'échec. Vous pouvez utiliser une valeur booléenne statique ou une JSONPath variable dynamique qui se résout en valeur booléenne.  |  Booléen  |  Non  |  `true`  |  `true` \$1 `false` \$1 ou une JSONPath variable qui prend la valeur vraie ou fausse.  | 
|  timeoutSeconds  |  Durée maximale, en secondes, pendant laquelle l'étape s'exécute avant d'échouer et de réessayer, si de nouvelles tentatives s'appliquent.  |  Entier  |  Non  |  Dépend de la valeur par défaut définie pour l'action de l'étape, le cas échéant.  |  Ne peut pas être supérieur au délai maximum de l'action de l'étape  | 
|  Quelques secondes d'attente  |  Durée, en secondes, pendant laquelle l'exécution de l'étape sera interrompue.  |  Entier  |  Non  |  0  |  L'action de l'étape ne peut pas dépasser TimeOutSeconds  | 

**Exemple**

```
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"
```

### Sorties de documents de workflow
<a name="wfdoc-struct-output"></a>

Définit les sorties pour le flux de travail. Chaque sortie est une paire clé-valeur qui spécifie le nom de la sortie et la valeur. Vous pouvez utiliser les sorties pour exporter des données au moment de l'exécution que les flux de travail suivants pourront utiliser. Cette section est facultative.

Chaque sortie que vous définissez inclut les attributs suivants.


|  Champ  |  Description  |  Type  |  Obligatoire  | 
| --- | --- | --- | --- | 
|  name  |  Nom de la sortie. Le nom doit être unique pour tous les flux de travail que vous incluez dans votre pipeline.  |  String  |  Oui  | 
|  value  |  La valeur de la sortie. La valeur de la chaîne peut être une variable dynamique, telle qu'un fichier de sortie issu d'une action d'étape. Pour de plus amples informations, veuillez consulter [Utiliser des variables dynamiques dans votre document de flux de travail](wfdoc-dynamic-vars.md).  |  String  |  Oui  | 

**Exemple**

Créez un ID d'image de sortie pour le document de flux de travail avec le résultat de l'`createProdImage`étape.

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

Reportez-vous au résultat du flux de travail dans le flux de travail suivant.

```
$.workflowOutputs.outputImageId
```

# Actions d'étapes prises en charge pour votre document de flux de travail
<a name="wfdoc-step-actions"></a>

Cette section contient des informations détaillées sur les actions d'étape prises en charge par Image Builder.Termes utilisés dans cette section

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>

Cette étape applique diverses configurations et intégrations au système distribué AMIs, telles que les configurations de licence, les configurations de modèles de lancement, les configurations d'exportation S3, les configurations EC2 Fast Launch et les configurations de paramètres de Systems Manager. Les configurations s'appliquent aux images distribuées uniquement dans le compte source, à l'exception des configurations de paramètres SSM qui peuvent être appliquées entre comptes.

**Délai d'expiration par défaut :** 360 minutes

**Durée maximale :** 720 minutes

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| region | La région de l'image. | String | Oui |  |  | 
| licenseConfigurationArns | L'ARN de configuration de licence pour l'image. | Tableau | Non |  |  | 
| launchTemplateConfigurations |  | Tableau | Non |  |  | 
| launchTemplateConfigurations:launchTemplateId | ID du modèle de lancement à appliquer à l'image. | String | Oui si cela launchTemplateConfigurations est spécifié |  |  | 
| launchTemplateConfigurations: ID du compte | Le compte modèle de lancement IDs à appliquer à l'image. | String | Non |  |  | 
| launchTemplateConfigurations:setDefaultVersion | Le paramètre de version par défaut du modèle de lancement pour l'image. | Booléen | Non |  |  | 
| s3 ExportConfiguration |  | Tableau | Non |  |  | 
| S3 ExportConfiguration : Nom du rôle | Nom du rôle de configuration d'exportation S3 pour l'image. | String | Oui si cela s3ExportConfiguration est spécifié |  |  | 
| s3 ExportConfiguration : diskImageFormat | Le format d'image disque de configuration d'exportation S3 pour l'image. | String | Oui si cela s3ExportConfiguration est spécifié |  | Valeurs autorisées - VMDK\$1RAW\$1VHD | 
| S3 : seau S3 ExportConfiguration | Nom du compartiment de configuration d'exportation S3 pour l'image. | String | Oui si cela s3ExportConfiguration est spécifié |  |  | 
| S3 : préfixe S3 ExportConfiguration | Le préfixe du compartiment de configuration d'exportation S3 pour l'image. | String | Non |  |  | 
| fastLaunchConfigurations | La configuration de lancement EC2 rapide de l'image. | Tableau | Non |  |  | 
| fastLaunchConfigurations:activé |  EC2 Lancement rapide enabled/disabled de l'image. | Booléen | Oui si cela fastLaunchConfigurations est spécifié |  |  | 
| fastLaunchConfigurations: Configuration des instantanés |  EC2 Lancement rapide enabled/disabled de l'image. | Map | Non |  |  | 
| fastLaunchConfigurations:Configuration de la capture instantanée : targetResourceCount | EC2 Nombre de ressources cibles de Fast Launch pour l'image. | Entier | Non |  |  | 
| fastLaunchConfigurations:maxParallelLaunches | EC2 Fast Launch : nombre maximal de lancements parallèles pour l'image. | Entier | Non |  |  | 
| fastLaunchConfigurations: Modèle de lancement |  |  | Non |  |  | 
| fastLaunchConfigurations:Modèle de lancement : launchTemplateId | EC2 ID du modèle de lancement Fast Launch pour l'image. | String | Non |  |  | 
| fastLaunchConfigurations:Modèle de lancement : launchTemplateName | EC2 Nom du modèle de lancement Fast Launch pour l'image. | String | Non |  |  | 
| fastLaunchConfigurations:Modèle de lancement : launchTemplateVersion | EC2 Version du modèle de lancement rapide pour l'image. | String | Non |  |  | 
| ssmParameterConfigurations | Configuration du paramètre SSM pour l'image. | Map | Non |  |  | 
| ssmParameterConfigurations:amiAccountId | L'ID du compte AMI du paramètre SSM pour l'image. | String | Non |  |  | 
| ssmParameterConfigurations:Nom du paramètre | Nom du paramètre SSM de l'image. | String | Oui si cela ssmParameterConfigurations est spécifié |  |  | 
| ssmParameterConfigurations: Type de données | Type de données du paramètre SSM pour l'image. | String | Non |  | Valeurs autorisées - text\$1aws:ec2:image) | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| Images configurées | Liste des images configurées. | Tableau | 
| Images configurées : ID du compte | L'ID du compte de destination de l'image distribuée. | String | 
| Images configurées : nom | Le nom de l'AMI. | String | 
| Images configurées : AMIid | ID AMI de l'image distribuée. | String | 
| Images configurées : date de début | Heure UTC du début de la distribution. | String | 
| Images configurées : date d'arrêt | Heure UTC lorsque la distribution est terminée. | String | 
| Images configurées : étape | Étape à laquelle la distribution s'est arrêtée. | Terminé\$1 \$1 AssociateLicensesRunning \$1 \$1 UpdateLaunchTemplateRunning \$1 PutSsmParametersRunning \$1 UpdateFastLaunchConfiguration ExportAmiQueued ExportAmiRunning | 
| Images configurées : région | Ton AWS de l'image distribuée | String | 
| Images configurées : état | État de la distribution. | Terminé\$1Échoué\$1Annulé\$1 TimedOut | 
| Images configurées : message d'erreur  | Message d'erreur, le cas échéant. | String | 

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

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

Utilisez le résultat de la valeur de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.ApplyImageConfigurationsStep.configuredImages
```

## BootstrapInstanceForContainer
<a name="wfdoc-step-action-bootstrap-container"></a>

Cette action d'étape exécute un script de service pour démarrer l'instance avec les exigences minimales requises pour exécuter des flux de travail de conteneurs. Image Builder utilise **sendCommand** l'API de Systems Manager pour exécuter ce script. Pour plus d'informations, consultez la section [AWS Systems Manager Exécuter la commande](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html).

**Note**  
Le script bootstrap installe les packages Docker AWS CLI et Docker qui sont indispensables pour qu'Image Builder puisse créer des conteneurs Docker avec succès. Si vous n'incluez pas cette action, la création de l'image risque d'échouer.

**Délai d'expiration par défaut :** 60 minutes

**Durée maximale :** 720 minutes

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'ID de l'instance à démarrer. | String | Oui |  | Il doit s'agir de l'ID d'instance de sortie de l'étape de flux de travail qui a lancé l'instance pour ce flux de travail. | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| runCommandId | ID du Systems Manager sendCommand qui a exécuté le script bootstrap sur l'instance. | String | 
| status | État renvoyé par le Systems ManagersendCommand. | String | 
| output | Sortie renvoyée par le Systems ManagersendCommand. | String | 

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

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

Utilisez le résultat de la valeur de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.ContainerBootstrapStep.status
```

## CollectImageMetadata
<a name="wfdoc-step-action-collect-image-metadata"></a>

Cette action d'étape n'est valide que pour les flux de travail de génération.

EC2 Image Builder exécute l'[agent AWS Systems Manager (Systems Manager)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) sur les EC2 instances qu'il lance pour créer et tester votre image. Image Builder collecte des informations supplémentaires sur l'instance utilisée pendant la phase de construction avec [Systems Manager Inventory](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-inventory.html). Ces informations incluent le nom et la version du système d'exploitation (OS), ainsi que la liste des packages et de leurs versions respectives tels qu'indiqués par votre système d'exploitation.

**Note**  
Cette action de cette étape ne fonctionne que pour les images créées AMIs.

**Délai d'expiration par défaut :** 30 minutes

**Durée maximale :** 720 minutes

**Annulation :** Image Builder annule toutes les ressources Systems Manager créées au cours de cette étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'instance de build à laquelle appliquer les paramètres de métadonnées. | String | Oui |  | Il doit s'agir de l'ID d'instance de sortie de l'étape de flux de travail qui a lancé l'instance de génération pour ce flux de travail. | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| osVersion | Le nom et la version du système d'exploitation collectés à partir de l'instance de build. | String | 
| ID d'association | L'ID d'association Systems Manager utilisé pour la collecte de l'inventaire. | String | 

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

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

Utilisez le résultat de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.CollectMetadataStep.osVersion
```

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

Si Amazon Inspector est activé pour votre compte et que la numérisation d'images est activée pour votre pipeline, cette étape collecte les résultats de numérisation d'images signalés par Amazon Inspector pour votre instance de test. Cette action d'étape n'est pas disponible pour les flux de travail de génération.

**Délai d'expiration par défaut :** 120 minutes

**Durée maximale :** 720 minutes

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | ID de l'instance sur laquelle le scan a été exécuté. | String | Oui |  | Il doit s'agir de l'ID d'instance de sortie de l'étape de flux de travail qui a lancé l'instance pour ce flux de travail. | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| runCommandId | ID du Systems Manager sendCommand qui a exécuté le script pour collecter les résultats. | String | 
| status | État renvoyé par le Systems ManagersendCommand. | String | 
| output | Sortie renvoyée par le Systems ManagersendCommand. | String | 

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

```
- name: CollectFindingsStep
  action: CollectImageScanFindings
  onFailure: Abort
  inputs:
      instanceId.$: $.stepOutputs.LaunchStep.instanceId
```

Utilisez le résultat de la valeur de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.CollectFindingsStep.status
```

## CreateImage
<a name="wfdoc-step-action-create-img-from-inst"></a>

Cette étape crée une image à partir d'une instance en cours d'exécution avec l' EC2 `CreateImage`API Amazon. Pendant le processus de création, l'action de l'étape attend autant que nécessaire pour vérifier que les ressources ont atteint le bon état avant de continuer.

**Délai d'expiration par défaut :** 720 minutes

**Délai maximum :** 3 jours

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'instance à partir de laquelle créer la nouvelle image. | String | Oui |  | L'instance correspondant à l'ID d'instance fourni doit être dans un running état au début de cette étape. | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| imageId | L'ID AMI de l'image créée. | String | 

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

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

Utilisez le résultat de la valeur de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.CreateImageFromInstance.imageId
```

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

Cette étape permet de distribuer une AMI à des régions et à des comptes spécifiques. Il crée des copies de l'AMI dans les régions et les comptes cibles en fonction de la configuration de distribution fournie dans les demandes CreateImage CreateImagePipeline APIs ou des paramètres de distribution personnalisés fournis dans le flux de travail pour remplacer les paramètres de la configuration de distribution.

**Délai d'expiration par défaut :** 360 minutes

**Durée maximale :** 720 minutes

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| region | Liste des régions dans lesquelles distribuer l'image. | String | Oui |  | Longueur minimale de 1. Longueur maximale de 1024. | 
| name | Nom de la configuration de distribution. | String | Non |  |  | 
| description | Les distributions de la configuration de distribution. | String | Non |  |  | 
| targetAccountIds | Compte IDs sur lequel distribuer l'image. | Tableau | Non |  |  | 
| Balises AMI | Les balises de la configuration de distribution. | Map | Non |  |  | 
| kmsKeyId | Clés KMS à appliquer à l'image distribuée. | String | Non |  |  | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| Images distribuées | Liste des images distribuées | Tableau | 
| Images distribuées : région | La AWS région de l'image distribuée. | String | 
| Images distribuées : nom | Le nom de l'AMI. | String | 
| Images distribuées : Amiid | ID AMI de l'image distribuée. | String | 
| Images distribuées : ID du compte | L'ID du compte de destination de l'image distribuée. | String | 
| Images distribuées : date de début | Heure UTC du début de la distribution. | String | 
| Images distribuées : date d'arrêt | Heure UTC lorsque la distribution est terminée. | String | 
| Images distribuées : statut | État de la distribution. | Terminé\$1Échoué\$1Annulé\$1 TimedOut | 
| Images distribuées : étape | Étape à laquelle la distribution s'est arrêtée. | Terminé\$1 CopyAmiRunning | 
| Images distribuées : message d'erreur  | Message d'erreur, le cas échéant. | String | 

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

```
- 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}}"
```

Utilisez le résultat de la valeur de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.DistributeImageStep.distributedImages
```

## ExecuteComponents
<a name="wfdoc-step-action-exec-components"></a>

Cette étape exécute les composants spécifiés dans la recette de l'image en cours de création. Les flux de travail de génération exécutent les composants de génération sur l'instance de génération. Les flux de travail de test exécutent uniquement les composants de test sur l'instance de test.

Image Builder utilise **sendCommand** l'API de Systems Manager pour exécuter les composants. Pour plus d'informations, consultez la section [AWS Systems Manager Exécuter la commande](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html).

**Délai d'expiration par défaut :** 720 minutes

**Délai maximum :** 1 jour

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'ID de l'instance sur laquelle les composants doivent s'exécuter. | String | Oui |  | Il doit s'agir de l'ID d'instance de sortie de l'étape de flux de travail qui a lancé l'instance pour ce flux de travail. | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| runCommandId | ID du Systems Manager sendCommand qui a exécuté les composants sur l'instance. | String | 
| status | État renvoyé par le Systems ManagersendCommand. | String | 
| output | Sortie renvoyée par le Systems ManagersendCommand. | String | 

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

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

Utilisez le résultat de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.ExecComponentsStep.status
```

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

Cette étape lance l'exécution d'une machine à AWS Step Functions états à partir d'un flux de travail Image Builder. Image Builder utilise l'`StartExecution`API Step Functions pour lancer la machine à états et attend qu'elle soit terminée. Cela est utile pour intégrer des flux de travail complexes, des processus de validation de conformité ou de certification dans votre pipeline de création d'images.

Pour plus d'informations, consultez la section « [En savoir plus sur les machines à états » dans Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-statemachines.html) du *manuel du AWS Step Functions développeur*.

**Délai d'expiration par défaut :** 6 heures

**Délai d'attente maximal :** 24 heures

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| stateMachineArn | L'ARN de la machine d'état Step Functions à exécuter. | String | Oui |  | Il doit s'agir d'un ARN de machine à états valide. | 
| input | Données d'entrée JSON à fournir à la machine d'état. | String | Non | \$1\$1 | Doit être une chaîne JSON valide, longueur maximale : 16 KiB. | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| executionArn | L'ARN de l'exécution de la machine à états. | String | 
| output | Le résultat de l'exécution de la machine à états. | String | 

**Autorisations IAM requises**

Votre rôle d'exécution personnalisé doit disposer des autorisations suivantes pour utiliser cette action d'étape :

**Autoriser les actions**
+ `states:StartExecution`
+ `states:DescribeExecution`

**Spécifier les ressources**
+ `arn:aws:states:us-west-2:111122223333:stateMachine:state-machine-name`
+ `arn:aws:states:us-west-2:111122223333:execution:state-machine-name:*`

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

```
- 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"]
      }
```

Utilisez le résultat de la valeur de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.ValidateImageCompliance.executionArn
```

## LaunchInstance
<a name="wfdoc-step-action-launch-instance"></a>

Cette action lance une instance dans votre instance Compte AWS et attend que l'agent Systems Manager soit exécuté sur l'instance avant de passer à l'étape suivante. L'action de lancement utilise les paramètres de votre recette et les ressources de configuration de l'infrastructure associées à votre image. Par exemple, le type d'instance à lancer provient de la configuration de l'infrastructure. Le résultat est l'ID d'instance de l'instance qu'il a lancée.

L'`waitFor`entrée configure la condition qui satisfait à l'exigence d'achèvement de l'étape.

**Délai d'expiration par défaut :** 75 minutes

**Durée maximale :** 720 minutes

**Annulation :** pour les instances de build, la restauration exécute l'action que vous avez configurée dans votre ressource de configuration d'infrastructure. Par défaut, les instances de build sont arrêtées si la création de l'image échoue. Cependant, la configuration de l'infrastructure comporte un paramètre permettant de conserver l'instance de build à des fins de dépannage.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| imageIdOverride | L'image à utiliser pour lancer l'instance | String | Non |  Étape de construction : image de base de la recette Étape de test : sortie de l'AMI depuis la phase de construction  | Doit être un ID AMI valide | 
| instanceTypesOverride | Image Builder essaie chaque type d'instance de la liste jusqu'à ce qu'il en trouve un qui se lance correctement | Liste d'éléments String | Non | Types d'instances spécifiés dans la configuration de votre infrastructure | Il doit s'agir de types d'instance valides | 
| Attendre | La condition à attendre avant de terminer l'étape du flux de travail et de passer à l'étape suivante | String | Oui |  | Image Builder prend en chargessmAgent. | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| instanceId | ID d'instance de l'instance qui a été lancée. | String | 

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

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

Utilisez le résultat de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.LaunchStep.instanceId
```

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

Cette action d'étape modifie les attributs de distributed AMIs, tels que les autorisations de lancement et les autres attributs de l'AMI. Il fonctionne sur la AMIs base de ceux qui ont été distribués aux régions et aux comptes cibles.

**Délai d'expiration par défaut :** 120 minutes

**Durée maximale :** 180 minutes

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| region | Région de l'image. | String | Oui |  |  | 
| Autorisation de lancement |  |  | Non |  |  | 
| Autorisation de lancement : identifiants utilisateur | L'utilisateur IDs à modifier dans les autorisations de lancement de l'image. | String | Non |  |  | 
| Autorisation de lancement : groupes d'utilisateurs | Les groupes d'utilisateurs à modifier dans les autorisations de lancement de l'image. | String | Non |  |  | 
| Autorisation de lancement : OrganizationArns |  AWS Organisation ARNs à modifier dans les autorisations de lancement de l'image. | String | Non |  |  | 
| Autorisation de lancement : organizationalUnitArns | Unité d' AWS organisation ARNs à modifier dans les autorisations de lancement de l'image. | String | Non |  |  | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| Images modifiées | Une liste d'images modifiées | Tableau | 
| Images modifiées : ID du compte | L'ID du compte de destination de l'image distribuée. | String | 
| Images modifiées : nom | Le nom de l'AMI. | String | 
| Images modifiées : Amiid | ID AMI de l'image distribuée. | String | 
| Images modifiées : date de début | Heure UTC du début de la distribution. | String | 
| Images modifiées : date d'arrêt | Heure UTC lorsque la distribution est terminée. | String | 
| Images modifiées : étape | Étape à laquelle la distribution s'est arrêtée. | Terminé\$1 ModifyAmiRunning | 
| Images modifiées : région |  AWS Région de l'image. | String | 
| Images modifiées : statut | État de la distribution. | Terminé\$1Échoué\$1Annulé\$1 TimedOut | 
| Images modifiées : message d'erreur  | Message d'erreur, le cas échéant. | String | 

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

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

Utilisez le résultat de la valeur de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.ModifyImageAttributesStep.modifiedImages
```

## RegisterImage
<a name="wfdoc-step-action-register-image"></a>

Cette étape permet d'enregistrer une nouvelle Amazon Machine Image (AMI) à l'aide de l' EC2 RegisterImage API Amazon. Il vous permet de créer une AMI à partir d'un instantané existant ou d'un ensemble d'instantanés, en spécifiant différents attributs d'image.

**Délai d'attente par défaut :** 540 minutes

**Durée maximale :** 720 minutes

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| application | L'architecture de l'AMI. | String | Non |  | Valeurs valides : i386, x86\$164, arm64, x86\$164\$1mac, arm64\$1mac | 
| blockDeviceMapping | Bloquer les entrées de mappage des périphériques pour l'AMI. | Tableau | Non |  |  | 
| Mode de démarrage | Mode de démarrage de l'AMI. | String | Non |  | Valeurs valides : legacy-bios, uefi, uefi-preferred | 
| description | Description de l'AMI. | String | Non |  |  | 
| enaSupport | Si la mise en réseau améliorée avec ENA est activée. | Booléen | Non |  |  | 
| Emplacement de l'image | Emplacement du manifeste AMI. | String | Non |  | Nécessaire pour les versions basées sur S3 AMIs | 
| Assistance IMDS | Le niveau de IMDSv2 support. | String | Non |  | Valeurs valides : v2.0 | 
| includeSnapshotTags | S'il faut inclure les balises du premier instantané défini dans le mappage des périphériques en mode bloc. | Booléen | Non | FALSE |  Lorsque ce paramètre est défini sur true, les balises sont incluses comme suit : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/wfdoc-step-actions.html)  | 
| ID du noyau | L'ID du noyau à utiliser. | String | Non |  |  | 
| RamdisKid | ID du disque RAM à utiliser. | String | Non |  |  | 
| rootDeviceName | Le nom du périphérique racine. | String | Non |  | Exemple : /dev/sda1 | 
| sriovNetSupport | Mise en réseau améliorée grâce à l'interface Intel 82599 VF. | String | Non |  |  | 
| Assistance TPM | Support des versions TPM. | String | Non |  | Valeurs valides : v2.0 | 
| Données UEFI | Données UEFI codées en Base64. | String | Non |  |  | 
| Type de virtualisation | Type de virtualisation. | String | Non |  | Valeurs valides : hvm, paravirtual | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| imageId | L'ID AMI de l'image enregistrée. | String | 

**Autorisations IAM requises**

Votre rôle d'exécution personnalisé doit disposer des autorisations suivantes pour utiliser cette action d'étape :

**Autoriser les actions**
+ `ec2:DescribeSnapshots`
+ `ec2:CreateTags`

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

```
- 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"
```

Utilisez le résultat de la valeur de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.RegisterNewImage.imageId
```

**Exemple avec un SnapshotId extrait d'une autre étape et des balises de capture d'écran incluses dans l'AMI générée**

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

Cette étape exécute un document de commande pour votre flux de travail. Image Builder utilise **sendCommand** l'API de Systems Manager pour l'exécuter pour vous. Pour plus d'informations, consultez la section [AWS Systems Manager Exécuter la commande](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html).

**Délai d'expiration par défaut :** 720 minutes

**Durée maximale :** 720 minutes

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | ID de l'instance sur laquelle exécuter le document de commande. | String | Oui |  | Il doit s'agir de l'ID d'instance de sortie de l'étape de flux de travail qui a lancé l'instance pour ce flux de travail. | 
| documentName | Nom du document de commande Systems Manager à exécuter. | String | Oui |  |  | 
| parameters | Liste de paires clé-valeur pour tous les paramètres requis par le document de commande. | <string>dictionnaire<chaîne, liste > | Conditionnel |  |  | 
| Version du document | Version du document de commande à exécuter. | String | Non | \$1DEFAULT |  | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| runCommandId | ID du Systems Manager sendCommand qui a exécuté le document de commande sur l'instance. | String | 
| status | État renvoyé par le Systems ManagersendCommand. | String | 
| output | Sortie renvoyée par le Systems ManagersendCommand. | Liste de chaînes | 

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

```
- name: RunCommandDoc
  action: RunCommand
  onFailure: Abort
  inputs:
    documentName: SampleDocument
    parameters:
        osPlatform: 
          - "linux"
    instanceId.$: $.stepOutputs.LaunchStep.instanceId
```

Utilisez le résultat de la valeur de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.RunCommandDoc.status
```

## RunSysPrep
<a name="wfdoc-step-action-run-sysprep"></a>

Cette action utilise l'API **sendCommand** in the Systems Manager pour exécuter le `AWSEC2-RunSysprep` document pour les instances Windows avant que l'instance de build ne s'arrête pour le snapshot. Ces actions suivent les [AWS meilleures pratiques en matière de renforcement et de nettoyage de l'image](https://aws.amazon.com/articles/public-ami-publishing-hardening-and-clean-up-requirements/).

**Délai d'expiration par défaut :** 60 minutes

**Durée maximale :** 720 minutes

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | ID de l'instance sur laquelle exécuter le AWSEC2-RunSysprep document. | String | Oui |  | Il doit s'agir de l'ID d'instance de sortie de l'étape de flux de travail qui a lancé l'instance pour ce flux de travail. | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| runCommandId | ID du Systems Manager sendCommand qui a exécuté le AWSEC2-RunSysprep document sur l'instance. | String | 
| status | État renvoyé par le Systems ManagersendCommand. | String | 
| output | Sortie renvoyée par le Systems ManagersendCommand. | String | 

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

```
- name: RunSysprep
  action: RunSysPrep
  onFailure: Abort
  inputs:
      instanceId.$: $.stepOutputs.LaunchStep.instanceId
```

Utilisez le résultat de la valeur de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.RunSysprep.status
```

## SanitizeInstance
<a name="wfdoc-step-action-sanitize-instance"></a>

Cette étape exécute le script de nettoyage recommandé pour les instances Linux avant que l'instance de build ne s'arrête pour le snapshot. Le script de désinfection permet de garantir que l'image finale respecte les meilleures pratiques de sécurité et que les artefacts ou paramètres de build qui ne devraient pas être répercutés sur votre instantané sont supprimés. Pour plus d'informations sur le script, consultez[Nettoyage requis après la construction](security-best-practices.md#post-build-cleanup). Cette action de cette étape ne s'applique pas aux images du conteneur.

Image Builder utilise **sendCommand** l'API de Systems Manager pour exécuter ce script. Pour plus d'informations, consultez la section [AWS Systems Manager Exécuter la commande](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html).

**Délai d'expiration par défaut :** 60 minutes

**Durée maximale :** 720 minutes

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | ID de l'instance à désinfecter. | String | Oui |  | Il doit s'agir de l'ID d'instance de sortie de l'étape de flux de travail qui a lancé l'instance pour ce flux de travail. | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| runCommandId | ID du Systems Manager sendCommand qui a exécuté le script de nettoyage sur l'instance. | String | 
| status | État renvoyé par le Systems ManagersendCommand. | String | 
| output | Sortie renvoyée par le Systems ManagersendCommand. | String | 

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

```
- name: SanitizeStep
  action: SanitizeInstance
  onFailure: Abort
  inputs:
      instanceId: $.stepOutputs.LaunchStep.instanceId
```

Utilisez le résultat de la valeur de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.SanitizeStep.status
```

## TerminateInstance
<a name="wfdoc-step-action-terminate-instance"></a>

Cette étape met fin à l'instance avec l'identifiant d'instance transmis en entrée.

**Délai d'expiration par défaut :** 30 minutes

**Durée maximale :** 720 minutes

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'ID de l'instance à terminer. | String | Oui |  |  | 

**Sorties :** Il n'y a aucune sortie pour cette action d'étape.

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

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

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

Cette étape interrompt le flux de travail en cours d'exécution et attend de recevoir une action externe de la part de l'action d'**SendWorkflowStepAction**API Image Builder. Cette étape publie un EventBridge événement sur votre bus d' EventBridge événements par défaut avec un type de détail`EC2 Image Builder Workflow Step Waiting`. L'étape peut également envoyer une notification SNS si vous fournissez un ARN de rubrique SNS, ou invoquer une fonction Lambda de manière asynchrone si vous fournissez un nom de fonction Lambda.

**Délai d'expiration par défaut :** 3 jours

**Délai maximum :** 7 jours

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| snsTopicArn | Un ARN de rubrique SNS facultatif auquel envoyer une notification lorsque l'étape du flux de travail est en attente. | String | Non |  |  | 
| lambdaFunctionName | Nom ou ARN facultatif de la fonction Lambda à invoquer de manière asynchrone lorsque l'étape du flux de travail est en attente. | String | Non |  |  | 
| payload | Chaîne JSON utilisée comme message pour SNS et charge utile pour Lambda. Si elle est fournie, une charge utile personnalisée est encapsulée par défautmessage/payload, used for SNS and Lambda respectively. If not provided, generates default message/payload. | String | Non |  | Doit être une chaîne JSON valide, 16 KIB au maximum | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| action | L'action renvoyée par l'action d'SendWorkflowStepActionAPI. | Chaîne (RESUMEouSTOP) | 
| raison | Motif de l'action renvoyée. | String | 

**Autorisations IAM requises**

Votre rôle d'exécution personnalisé doit disposer des autorisations suivantes pour utiliser cette action d'étape :

**Autoriser les actions**
+ `lambda:InvokeFunction`

**Spécifier les ressources**
+ `arn:aws:lambda:us-west-2:111122223333:function:function-name`
+ `arn:aws:lambda:us-west-2:111122223333:function:*`

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail avec notification SNS.

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

Spécifiez l'action de l'étape dans le document de flux de travail avec l'invocation de la fonction Lambda.

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

Utilisez le résultat de la valeur de l'action de l'étape dans le document de flux de travail.

```
$.stepOutputs.SendEventAndWait.reason
```

## WaitForSSMAgent
<a name="wfdoc-step-action-wait-for-ssm-agent"></a>

Cette action d'étape attend qu'une EC2 instance devienne gérable AWS Systems Manager après les périodes attendues d'absence de réponse. Cela est particulièrement utile pour les flux de travail présentant des interruptions d'instance connues, tels que les redémarrages du système, les mises à niveau du système d'exploitation ou les opérations spécifiques à la plate-forme qui déconnectent temporairement l'instance de SSM. Image Builder surveille l'instance jusqu'à ce qu'elle retrouve sa connectivité SSM ou qu'elle expire.

**Délai d'expiration par défaut :** 60 minutes

**Durée maximale :** 180 minutes

**Annulation :** il n'y a aucune annulation pour cette action d'étape.

**Entrées :** Le tableau suivant inclut les entrées prises en charge pour cette action d'étape.


| Nom d'entrée | Description | Type | Obligatoire | Par défaut | Constaintes | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | ID de l'instance à surveiller pour la connectivité SSM. | String | Oui |  | Il doit s'agir d'un ID d' EC2 instance valide | 

**Sorties :** Le tableau suivant inclut les sorties pour cette action d'étape.


| Nom de sortie | Description | Type | 
| --- | --- | --- | 
| status | État de connexion de l'agent SSM. | String | 

**Exemple**

Spécifiez l'action de l'étape dans le document de flux de travail.

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

Utilisez le résultat de la valeur de l'action de l'étape dans le document de flux de travail.

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

# Utiliser des variables dynamiques dans votre document de flux de travail
<a name="wfdoc-dynamic-vars"></a>

Vous pouvez utiliser des variables dynamiques dans vos documents de flux de travail pour représenter des valeurs qui varient au moment de l'exécution de votre processus de création d'image. L'interpolation de chaînes pour les variables dynamiques vous permet d'intégrer des JSONPath expressions dans du contenu structuré tel que des chaînes JSON. Cela est particulièrement utile lorsque vous devez transmettre des valeurs d'exécution dans des charges utiles complexes à des actions par étapes telles que ou. `ExecuteStateMachine` `WaitForAction`

Pour utiliser l'interpolation de chaînes pour les variables dynamiques, placez les JSONPath expressions entre accolades `"{{...}}"` doubles dans le contenu de votre chaîne. Seules JSONPath les expressions entourées de doubles accolades sont traitées comme des variables. Toute JSONPath expression qui n'est pas entourée d'accolades doubles est traitée comme du contenu de chaîne littéral.

**JSONPath syntaxe des variables de flux de travail dynamique**

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

Les valeurs des variables dynamiques sont représentées sous forme de JSONPath sélecteurs dotés de nœuds structurels qui identifient de manière unique la variable cible. Le premier nœud après la racine (\$1) fait référence à la structure du document du flux de travail, telle que`stepOutputs`, ou dans le cas des variables système Image Builder,`imageBuilder`. La liste suivante contient les nœuds de structure JSONPath de document de flux de travail pris en charge.

**Nœuds de structure de document**
+ paramètres - Les paramètres du flux de travail
+ StepOutputs - Sorties d'une étape du même document de flux de travail
+ WorkflowOutputs - Sorties d'un document de flux de travail déjà exécuté
+ imagebuilder - Variables système Image Builder

Les nœuds `parameters` et structure du `stepOutputs` document incluent un nœud facultatif pour le nom de l'étape. Cela permet de garantir des noms de variables uniques pour toutes les étapes.

Le dernier nœud de JSONPath est le nom de la variable cible, par exemple`instanceId`.

Chaque étape peut faire référence à la sortie de toute action d'étape précédente avec ces variables JSONPath dynamiques. Ceci est également connu sous le nom de *chaînage ou de référencement*. Pour faire référence au résultat d'une action d'une étape précédente, vous pouvez utiliser la variable dynamique suivante.

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

**Important**  
Lorsqu'un paramètre d'entrée fait référence à une variable dynamique, l'indicateur de chaînage (`.$`) doit être attaché à la fin du nom du paramètre.

**Exemple 1 : indicateur de chaînage des paramètres d'entrée**

L'exemple suivant montre un paramètre d'entrée qui utilise l'interpolation de chaîne pour résoudre une variable dynamique dans la valeur du paramètre lors de l'exécution.

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

**Exemple 2 : interpolation de chaînes dans des variables dynamiques**

L'exemple suivant montre comment les variables dynamiques utilisent l'interpolation de chaînes pour déterminer les valeurs lors de l'exécution.

```
- 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 }}"
      }
```

Dans cet exemple, les JSONPath expressions placées entre accolades doubles sont résolues lors de l'exécution :
+ `{{ $.stepOutputs.CreateImageFromInstance.imageId }}`- Correspond à l'identifiant réel de l'image à partir de l' CreateImageFromInstance étape
+ `{{ $.imagebuilder.dateTime }}`- Corrige à l'horodatage de construction actuel. Consultez [Utiliser les variables système Image Builder](#wfdoc-ib-vars) la liste des variables système Image Builder que vous pouvez utiliser.
+ `{{ $.stepOutputs.LaunchStep.instanceType }}`- Résout au type d'instance utilisé dans LaunchStep

Les chaînes littérales `"region": "us-east-1"` restent inchangées.

**Note**  
L'interpolation de chaînes fonctionne avec n'importe quel contenu de chaîne de votre document de flux de travail, y compris les chaînes multilignes à l'aide de l'opérateur YAML pipe ()`|`. L'exigence d'orthèse bouclée agit comme un mécanisme d'échappement permettant de faire clairement la distinction entre les JSONPath variables et le contenu du texte littéral.

## Utiliser les variables système Image Builder
<a name="wfdoc-ib-vars"></a>

Image Builder fournit les variables système suivantes que vous pouvez utiliser dans votre document de flux de travail :


|  Nom de la variable  |  Description  |  Type  |  Exemple de valeur  | 
| --- | --- | --- | --- | 
|  cloudWatchLogGroupe  |  Nom du groupe CloudWatch Logs pour les logs de sortie. Format : `/aws/imagebuilder/<recipe-name>`  |  String  |  `/aws/imagebuilder/sampleImageRecipe`  | 
|  cloudWatchLogStream  |  Nom du flux CloudWatch Logs pour les logs de sortie.  |  String  |  *1.0.0/1*  | 
|  collectImageMetadata  |  Le paramètre qui indique à Image Builder s'il doit collecter les métadonnées de l'instance.  |  Booléen  |  `true` \$1 `false`  | 
|  collectImageScanConclusions  |  La valeur actuelle du paramètre qui permet à Image Builder de collecter les résultats de numérisation d'images.  |  Booléen  |  `true` \$1 `false`  | 
|  imageBuildNumber  |  Numéro de version de compilation de l'image.  |  Entier  |  *1*  | 
|  imageId  |  ID AMI de l'image de base.  |  String  |  *ami-1234567890abcdef1*  | 
|  Nom de l'image  |  Le nom de l'image.  |  String  |  *sampleImage*  | 
|  imageType  |  Type de sortie d'image.  |  String  |  `AMI` \$1 `Docker`  | 
|  imageVersionNumber  |  Numéro de version de l'image.  |  String  |  *1.0.0*  | 
|  instanceProfileName  |  Nom du rôle de profil d'instance utilisé par Image Builder pour lancer les instances de génération et de test.  |  String  |  *SampleImageBuilderInstanceProfileRole*  | 
|  platform  |  La plate-forme du système d'exploitation de l'image créée.  |  String  |  `Linux` \$1 `Windows` \$1 `MacOS`  | 
|  Journaux S3  |  Objet JSON contenant la configuration des journaux S3 écrits par Image Builder.  |  Objet JSON  |  \$1'S3Logs' : \$1's3 BucketName ':' ', *sample-bucket* 's3' : KeyPrefix ''\$1\$1 *ib-logs*  | 
|  securityGroups  |  Le groupe de sécurité IDs qui s'applique à la création et au test des instances.  |  Liste [Chaîne]  |  *[sg-1234567890abcdef1, sg-11112222333344445]*  | 
|  Source ImageLearn  |  Le nom de ressource Amazon (ARN) de la ressource d'image Image Builder que le flux de travail utilise pour les étapes de création et de test.  |  String  |  arn:aws:imagebuilder : ::image/ *us-east-1* *111122223333* *sampleImage* *1.0.0/1*  | 
|  subnetId  |  ID du sous-réseau dans lequel lancer les instances de génération et de test.  |  String  |  *subnet-1234567890abcdef1*  | 
|  terminateInstanceOnDéfaillance  |  La valeur actuelle du paramètre qui indique à Image Builder de mettre fin à l'instance en cas de défaillance ou de la conserver à des fins de dépannage.  |  Booléen  |  `true` \$1 `false`  | 
|  Phase du flux de travail  |  L'étape en cours d'exécution pour l'exécution du flux de travail.  |  String  |  `Build` \$1 `Test`  | 
|  workingDirectory  |  Le chemin d'accès au répertoire de travail.  |  String  |  `/tmp`  | 

# Utilisez des instructions conditionnelles dans les étapes de votre flux de travail
<a name="wfdoc-conditional-statements"></a>

Les instructions conditionnelles commencent par l'attribut du document de `if` déclaration. Le but ultime de l'`if`instruction est de déterminer s'il faut exécuter l'action de l'étape ou l'ignorer. Si l'`if`instruction est résolue par`true`, l'action de l'étape est exécutée. Si le problème est résolu`false`, Image Builder ignore l'action de l'étape et enregistre le statut de l'étape `SKIPPED` dans le journal.

L'`if`instruction prend en charge les instructions de branchement (`and`,`or`) et les modificateurs conditionnels (`not`). Il prend également en charge les opérateurs de comparaison suivants qui effectuent des comparaisons de valeurs (égal, inférieur à, supérieur à) en fonction des types de données qu'il compare (chaîne ou nombre).

**Opérateurs de comparaison pris en charge**
+ `booleanEquals`
+ `numberEquals`
+ `numberGreaterThan`
+ `numberGreaterThanEquals`
+ `numberLessThan`
+ `numberLessThanEquals`
+ `stringEquals`

**Règles relatives aux instructions de branchement et aux modificateurs conditionnels**  
Les règles suivantes s'appliquent aux instructions de branchement (`and`,`or`) et aux modificateurs conditionnels (`not`).
+ Les instructions de branchement et les modificateurs conditionnels doivent apparaître seuls sur une ligne.
+ Les instructions de branchement et les modificateurs conditionnels doivent respecter les règles de niveau.
  + Il ne peut y avoir qu'une seule déclaration au niveau du parent.
  + Chaque branche ou modificateur enfant commence un nouveau niveau.

  Pour plus d'informations sur les niveaux, consultez[Niveaux imbriqués dans les instructions conditionnelles](#wfdoc-conditional-structure).
+ Chaque instruction secondaire doit comporter au moins une instruction conditionnelle secondaire, mais pas plus de dix.
+ Les modificateurs conditionnels ne fonctionnent que sur une seule instruction conditionnelle enfant.

## Niveaux imbriqués dans les instructions conditionnelles
<a name="wfdoc-conditional-structure"></a>

Les déclarations conditionnelles fonctionnent à plusieurs niveaux dans une section qui leur est propre. Par exemple, l'attribut `if` statement apparaît au même niveau dans votre document de flux de travail que le nom et l'action de l'étape. Il s'agit de la base de l'énoncé conditionnel.

Vous pouvez spécifier jusqu'à quatre niveaux d'instructions conditionnelles, mais une seule instruction peut apparaître au niveau parent. Toutes les autres instructions de branchement, modificateurs conditionnels ou opérateurs conditionnels sont indentés à partir de là, un retrait par niveau.

Le schéma suivant indique le nombre maximal de niveaux imbriqués pour une instruction conditionnelle.

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

Attribut `if`  
L'`if`attribut spécifie l'instruction conditionnelle en tant qu'attribut de document. C'est le niveau zéro.

Niveau parental  
Il s'agit du premier niveau d'imbrication pour les instructions conditionnelles. Il ne peut y avoir qu'une seule déclaration à ce niveau. Si vous n'avez pas besoin de branchement ou de modificateurs, il peut s'agir d'un opérateur conditionnel sans instructions enfant. Ce niveau n'utilise pas la notation en tirets, sauf pour les opérateurs conditionnels.

Niveaux pour enfants  
Les niveaux 2 à 4 sont considérés comme des niveaux pour enfants. Les instructions enfant peuvent inclure des instructions de branchement, des modificateurs conditionnels ou des opérateurs conditionnels.

**Exemple : niveaux imbriqués**  
L'exemple suivant montre le nombre maximal de niveaux dans une instruction conditionnelle.

```
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"
```

**Règles de nidification**
+ Chaque branche ou modificateur au niveau de l'enfant ouvre un nouveau niveau.
+ Chaque niveau est indenté.
+ Il peut y avoir un maximum de quatre niveaux, dont une instruction, un modificateur ou un opérateur au niveau parent, et jusqu'à trois niveaux supplémentaires.

## Exemples de déclarations conditionnelles
<a name="wfdoc-conditional-examples"></a>

Ce groupe d'exemples montre différents aspects des déclarations conditionnelles.

**Branchement : et**  
L'instruction de `and` branchement fonctionne sur une liste d'expressions qui sont des enfants de la branche, qui doivent toutes être évaluées à`true`. Image Builder évalue les expressions dans l'ordre dans lequel elles apparaissent dans la liste. Si une expression est évaluée à`false`, le traitement s'arrête et la branche est prise en compte`false`.

L'exemple suivant évalue à`true`, car les deux expressions sont évaluées à`true`.

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

**Branchement : ou**  
L'instruction de `or` branchement fonctionne sur une liste d'expressions qui sont des enfants de la branche, dont au moins l'une doit être évaluée à`true`. Image Builder évalue les expressions dans l'ordre dans lequel elles apparaissent dans la liste. Si une expression est évaluée à`true`, le traitement s'arrête et la branche est prise en compte`true`.

L'exemple suivant évalue à`true`, même si la première expression est`false`.

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

**Modificateur conditionnel : non**  
Le modificateur `not` conditionnel annule les instructions conditionnelles qui sont les enfants de la branche.

L'exemple suivant indique `true` quand le `not` modificateur annule l'instruction `stringEquals` conditionnelle.

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

**Déclaration conditionnelle : BooleanEquals**  
L'opérateur de `booleanEquals` comparaison compare les valeurs booléennes et renvoie la valeur true si les valeurs booléennes correspondent exactement.

L'exemple suivant détermine si cette option `collectImageScanFindings` est activée.

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

**Déclaration conditionnelle : StringEquals**  
L'opérateur de `stringEquals` comparaison compare deux chaînes et renvoie la valeur true si les chaînes correspondent exactement. Si l'une des valeurs n'est pas une chaîne, Image Builder la convertit en chaîne avant de procéder à la comparaison.

L'exemple suivant compare la variable système de plate-forme pour déterminer si le flux de travail s'exécute sur une plate-forme Linux.

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

**Déclaration conditionnelle : NumberEquals**  
L'opérateur de `numberEquals` comparaison compare deux nombres et renvoie la valeur true s'ils sont égaux. Les nombres à comparer doivent être dans l'un des formats suivants.
+ Entier
+ Float
+ Une chaîne qui correspond au modèle d'expression régulière suivant :`^-?[0-9]+(\.)?[0-9]+$`.

Les exemples de comparaison suivants évaluent tous à`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
```