View a markdown version of this page

Création d'un document de flux de travail YAML - EC2 Image Builder

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

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'images. 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 repartir 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

Les sections suivantes décrivent la structure du document de flux de travail YAML qu'Image Builder utilise pour effectuer des actions de création, de test et de distribution d'images.

Identification des documents relatifs au flux

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 de saisie des documents du flux de travail

Cette partie du document de flux de travail définit les paramètres d'entrée que l'appelant peut spécifier. Si vous ne disposez d'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 pas default valeur pour un paramètre, vous devez fournir la valeur du paramètre lors 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, celle-ci 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, celui-ci est défini par défaut sur une valeur de chaîne requise lors de l'exécution.

Chaîne

Non

Le type de données du paramètre doit être l'un des suivants :

  • string

  • integer

  • boolean

  • 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 travail

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

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

$.stepOutputs.step-name.output-name

Pour plus d’informations, consultez Utilisez des variables dynamiques dans votre document de flux de travail.

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 pour l'étape.

Note

Si vous définissez waitSeconds pour une étape, la valeur doit être inférieure à timeoutSeconds. Chaque action par étape définit également un maximum timeoutSeconds valeur. Si vous définissez timeoutSeconds supérieur au maximum pour l'action, la validation échoue. Pour les maximums par action, voir Actions par étapes prises en charge pour votre document de flux de travail.

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

Il doit s'agir d'une action par étape prise en charge pour les documents de flux de travail Image Builder.

if, suivi d'un ensemble d'instructions conditionnelles qui modifient le 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.

Décret

Non

Image Builder prend en charge les instructions conditionnelles suivantes en tant que modificateurs du 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.

  • 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 que l'action de l'étape doit exécuter. Vous pouvez spécifier les valeurs clés sous forme de valeurs statiques ou à l'aide d'une variable JSONPath dont la résolution correspond au type de données correct.

Décret

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.

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.

Comportement
  • Abort : échoue à l'étape, échoue au flux de travail et n'exécute aucune autre étape 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.

  • 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é.

Décret

Non

Aucune nouvelle tentative

Le retry L'attribut contient les champs suivants :

  • maxAttempts (obligatoire) : nombre total de fois que l'étape peut être exécutée, première tentative comprise. Valeurs valides : 1 à 10.

  • backoffSeconds (facultatif) — Le nombre de secondes pendant lesquelles Image Builder attend avant de démarrer chaque nouvelle tentative. Si vous ne définissez aucune valeur, Image Builder attend 30 secondes. Valeurs valides : 0 à 600.

Annulation activée

Détermine si l'étape sera annulée en cas de panne. 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 dont la résolution 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 dépasser le 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 suspendue.

Entier

Non

0

Ne peut pas dépasser le délai TimeoutSeconds de l'action de l'étape

Exemple

L'exemple suivant utilise waitForActionAtEnd paramètre, que le document de flux de travail doit déclarer dans son parameters section.

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é

Par défaut, chaque étape d'un flux de travail s'exécute une fois. Pour qu'Image Builder exécute à nouveau automatiquement une étape en cas d'échec, ajoutez le retry attribut de l'étape. Le retry L'attribut contient les champs suivants.

  • maxAttempts (obligatoire) : nombre total de fois que l'étape peut être exécutée, première tentative comprise. Par exemple, si vous définissez maxAttempts pour 3 et chaque tentative échoue, l'étape s'exécute trois fois avant qu'Image Builder ne la marque comme étant un échec. Valeurs valides : 1 à 10.

  • backoffSeconds (facultatif) — Le nombre de secondes pendant lesquelles Image Builder attend avant de démarrer 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 :

  • Le timeoutSeconds la valeur de l'étape s'applique à chaque tentative séparément. Le délai d'attente redémarre lorsqu'une nouvelle tentative commence.

  • Si l'étape échoue toujours après la dernière tentative, onFailure le comportement de l'étape s'applique.

Certaines actions par étapes comportent un comportement de nouvelle tentative supplémentaire :

  • Avant qu'il ne réessaie, un LaunchInstance étape, Image Builder met fin à l'instance lancée par la tentative infructueuse. La nouvelle tentative lance une nouvelle instance.

  • Lorsqu'il essaie à nouveau, ExecuteComponents étape 1, Image Builder exécute à nouveau vos composants depuis le début. Cela n'annule pas les modifications qu'une tentative infructueuse a déjà effectuées sur 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 GetWorkflowStepExecution ou ListWorkflowStepExecutions Opérations d'API. La réponse inclut le attemptNumber et maxAttempts champs pour l'étape.

Note

Le retry l'attribut pour une étape du flux de travail est distinct de maxAttempts champ, qui réessaie une étape individuelle dans un AWSTOE document de composant. Pour plus d’informations, consultez Utilisez la commande AWSTOE cadre de documentation sur les composants pour les composants personnalisés.

Exemple

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

Sorties de documents liés au flux

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.

Vous pouvez définir jusqu'à 25 sorties dans un document de flux de travail. Chaque nom de sortie doit être unique pour 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 faites référence à la sortie d'une étape dans même flux de travail avec $.stepOutputs.stepName.field, mais vous faites référence à la sortie d'un plus tôt flux de travail 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 Utilisez des variables dynamiques dans votre document de flux de travail.

Chaîne

Oui

Exemple

Créez un ID d'image de sortie pour le document de flux de travail à l'aide de la sortie des étapes createProdImage étape.

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

Reportez-vous à la sortie du flux de travail dans le flux de travail suivant.

$.workflowOutputs.outputImageId