

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 création, de test et de distribution du processus de création d'image. Le même format de document s'applique aux trois types de flux de travail. 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>

Les sections suivantes décrivent la structure du document de flux de travail YAML utilisé par Image Builder pour effectuer des actions de création, de test et de distribution d'images.
+ [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. | Chaîne | Non | 
| description | Description du document. | Chaîne | Non | 
| schemaVersion | La version du schéma du document, actuellement 1.0. | Chaîne | 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.

Vous pouvez définir jusqu'à 25 paramètres dans un document de flux de travail. Chaque valeur de paramètre peut contenir jusqu'à 1 024 caractères. Un paramètre doit utiliser l'un des quatre types de données pris en charge : `string``integer`,`boolean`, ou`stringList`. Si vous ne spécifiez aucune `default` valeur pour un paramètre, vous devez fournir la valeur du paramètre au moment de l'exécution.


|  Champ  |  Description  |  Type  |  Obligatoire  |  Contraintes  | 
| --- | --- | --- | --- | --- | 
| name | Nom du paramètre. | Chaîne | Oui |  | 
| description | Description du paramètre. | Chaîne | 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. | Chaîne | Oui | Le type de données du paramètre doit être l'un des suivants :+  `string` <br />+  `integer` <br />+  `boolean` <br />+  `stringList`  | 

**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 sélecteur JSONPath. Par exemple :

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

Pour plus d’informations, consultez [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.

**Note**  
Si vous définissez `waitSeconds` une étape, la valeur doit être inférieure à`timeoutSeconds`. Chaque action d'étape définit également une `timeoutSeconds` valeur maximale. Si vous définissez `timeoutSeconds` une valeur supérieure au maximum pour l'action, la validation échoue. Pour les maximums par action, voir. [Actions d'étapes prises en charge pour votre document de flux de travail](wfdoc-step-actions.md)

Chaque étape peut inclure les attributs suivants.


|  Champ  |  Description  |  Type  |  Obligatoire  |  Valeur par défaut  |  Contraintes  | 
| --- | --- | --- | --- | --- | --- | 
| action | Action de flux de travail exécutée par cette étape. | Chaîne | 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 :+  Conditions de branchement et modificateurs :`if`,,`and`,`or`. `not` Les conditions de branchement sont spécifiées sur une ligne par elles-mêmes. <br />+  Opérateurs de comparaison : `booleanEquals``numberEquals`,`numberGreaterThan`,`numberGreaterThanEquals`,,`numberLessThan`,`numberLessThanEquals`,`stringEquals`.  | 
| description | Description de l'étape. | Chaîne | 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 à l'aide d'une variable JSONPath 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. | Chaîne | Oui |  | La longueur doit être comprise entre 3 et 128 caractères.<br />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.+  `Abort`— Échoue l'étape, échoue le flux de travail et n'exécute aucune étape restante après l'étape qui a échoué. Si la restauration est activée, elle commence par l'étape qui a échoué et se poursuit jusqu'à ce que toutes les étapes qui l'autorisent soient annulées. <br />+  `Continue`— Échoue l'étape, mais continue d'exécuter les étapes restantes après l'étape qui a échoué. Dans ce cas, il n'y a pas de retour en arrière.  | Chaîne | Non | `Abort` | `Abort` \| `Continue` | 
| nouvelle tentative | Configure Image Builder pour qu'il réexécute automatiquement l'étape en cas d'échec. Pour plus d’informations, consultez [Réessayer les étapes du flux de travail qui ont échoué](#wfdoc-step-retry). | Dict | Non | Aucune nouvelle tentative | L'`retry`attribut contient les champs suivants :+  `maxAttempts`(obligatoire) — Le nombre total de fois que l'étape peut être exécutée, y compris la première tentative. Valeurs valides : 1 à 10. <br />+  `backoffSeconds`(facultatif) — Le nombre de secondes pendant lesquelles Image Builder attend avant de lancer chaque nouvelle tentative. Si vous ne définissez aucune valeur, Image Builder attend 30 secondes. Valeurs valides : 0 à 600.  | 
| Rollback activé | Configure si l'étape sera annulée en cas d'échec. Vous pouvez utiliser une valeur booléenne statique ou une variable JSONPath dynamique qui se résout en une valeur booléenne. | Booléen | Non | `true` | `true` \| `false` \| ou une variable JSONPath qui prend la valeur true ou false.  | 
| 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"
```

#### Réessayer les étapes du flux de travail qui ont échoué
<a name="wfdoc-step-retry"></a>

Par défaut, chaque étape d'un flux de travail ne s'exécute qu'une seule fois. Pour qu'Image Builder réexécute automatiquement une étape en cas d'échec, ajoutez l'`retry`attribut à l'étape. L'`retry`attribut contient les champs suivants.
+ `maxAttempts`(obligatoire) — Le nombre total de fois que l'étape peut être exécutée, y compris la première tentative. Par exemple, si vous définissez cette option `maxAttempts` `3` et que chaque tentative échoue, l'étape est exécutée trois fois avant qu'Image Builder ne la marque comme un échec. Valeurs valides : 1 à 10.
+ `backoffSeconds`(facultatif) — Le nombre de secondes pendant lesquelles Image Builder attend avant de lancer chaque nouvelle tentative. Si vous ne définissez aucune valeur, Image Builder attend 30 secondes. Pour réessayer immédiatement, définissez la valeur sur. `0` Valeurs valides : 0 à 600.

Les nouvelles tentatives fonctionnent comme suit :
+ La `timeoutSeconds` valeur de l'étape s'applique à chaque tentative séparément. Le délai d'expiration redémarre lorsqu'une nouvelle tentative commence.
+ Si l'étape échoue toujours après la dernière tentative, le `onFailure` comportement de l'étape s'applique.

Certaines actions d'étape ont un comportement de nouvelle tentative supplémentaire :
+ Avant de réessayer une `LaunchInstance` étape, Image Builder met fin à l'instance lancée par la tentative infructueuse. La nouvelle tentative lance une nouvelle instance.
+ Lorsqu'il réessaie une `ExecuteComponents` étape, Image Builder réexécute vos composants depuis le début. Cela n'annule pas les modifications qu'une tentative infructueuse a déjà apportées à l'instance. Avant de configurer les nouvelles tentatives pour une étape qui exécute des composants, assurez-vous que vos composants peuvent être exécutés plusieurs fois en toute sécurité.

Pour voir combien de fois une étape a été exécutée, utilisez les opérations de l'`ListWorkflowStepExecutions`API `GetWorkflowStepExecution` or. La réponse inclut les `maxAttempts` champs `attemptNumber` et de l'étape.

**Note**  
L'`retry`attribut d'une étape du flux de travail est distinct du `maxAttempts` champ, qui permet de réessayer une étape individuelle dans un document de AWSTOE composant. Pour plus d’informations, consultez [Utilisez la commande AWSTOE cadre de documentation sur les composants pour les composants personnalisés](toe-use-documents.md).

**Exemple**

```
steps:
  - name: LaunchBuildInstance
    action: LaunchInstance
    onFailure: Abort
    retry:
      maxAttempts: 3
      backoffSeconds: 60
    inputs:
      waitFor: "ssmAgent"
```

### 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 indique 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.

Vous pouvez définir jusqu'à 25 sorties dans un document de flux de travail. Chaque nom de sortie doit être unique dans tous les flux de travail que vous incluez dans votre pipeline. Un flux de travail ultérieur peut ensuite référencer une sortie par son nom avec`$.workflowOutputs.{{name}}`.

**Note**  
Vous référencez le résultat d'une étape du *même* flux de travail avec`$.stepOutputs.{{stepName}}.{{field}}`, mais vous référencez le résultat d'un flux de travail *antérieur* avec uniquement le nom de sortie (`$.workflowOutputs.{{name}}`) et aucun nom d'étape.

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. | Chaîne | 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 plus d’informations, consultez [Utiliser des variables dynamiques dans votre document de flux de travail](wfdoc-dynamic-vars.md). | Chaîne | 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
```