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.
Utiliser des constructions en boucle dans AWSTOE
Cette section fournit des informations pour vous aider à créer des constructions en boucle dans le. AWSTOE Les constructions en boucle définissent une séquence répétée d'instructions. Vous pouvez utiliser les types de constructions en boucle suivants dans : AWSTOE
-
for
constructs — Itérer sur une séquence bornée d'entiers. -
forEach
construit-
forEach
boucle avec liste d'entrées : itère sur une collection limitée de chaînes. -
forEach
boucle avec liste délimitée : itère sur une collection limitée de chaînes jointes par un délimiteur.
-
Note
Les constructions en boucle ne prennent en charge que les types de données sous forme de chaîne.
Sujets de construction en boucle
Variables d'itération de référence
Pour faire référence à l'index et à la valeur de la variable d'itération en cours, l'expression de référence {{ loop.* }}
doit être utilisée dans le corps d'entrée d'une étape contenant une construction en boucle. Cette expression ne peut pas être utilisée pour faire référence aux variables d'itération de la construction en boucle d'une autre étape.
L'expression de référence comprend les membres suivants :
{{ loop.index }}
— Position ordinale de l'itération en cours, qui est indexée à.0
{{ loop.value }}
— La valeur associée à la variable d'itération en cours.
Noms des boucles
Toutes les constructions en boucle ont un champ de nom facultatif pour l'identification. Si un nom de boucle est fourni, il peut être utilisé pour faire référence à des variables d'itération dans le corps d'entrée de l'étape. Pour faire référence aux indices d'itération et aux valeurs d'une boucle nommée, utilisez {{ <loop_name>.* }}
with {{ loop.* }}
dans le corps de saisie de l'étape. Cette expression ne peut pas être utilisée pour faire référence à la construction en boucle nommée d'une autre étape.
L'expression de référence comprend les membres suivants :
{{ <loop_name>.index }}
— Position ordinale de l'itération en cours de la boucle nommée, qui est indexée à.0
{{ <loop_name>.value }}
— La valeur associée à la variable d'itération actuelle de la boucle nommée.
Résoudre les expressions de référence
AWSTOE Résout les expressions de référence comme suit :
{{ <loop_name>.* }}
— AWSTOE résout cette expression selon la logique suivante :Si la boucle de l'étape en cours d'exécution correspond à la
<loop_name>
valeur, l'expression de référence est résolue en fonction de la structure en boucle de l'étape en cours d'exécution.<loop_name>
aboutit à la construction en boucle nommée si elle apparaît dans l'étape en cours d'exécution.
{{ loop.* }}
— AWSTOE résout l'expression à l'aide de la construction en boucle définie dans l'étape en cours d'exécution.
Si des expressions de référence sont utilisées dans une étape ne contenant pas de boucle, les expressions AWSTOE ne sont pas résolues et elles apparaissent dans l'étape sans être remplacées.
Note
Les expressions de référence doivent être placées entre guillemets pour être correctement interprétées par le YAML compilateur.
Types de constructions en boucle
Cette section fournit des informations et des exemples sur les types de construction en boucle qui peuvent être utilisés dans le AWSTOE.
Types de constructions en boucle
for
boucle
La for
boucle itère sur une plage d'entiers spécifiée dans une limite définie par le début et la fin des variables. Les valeurs itératives font partie de l'ensemble [start, end]
et incluent les valeurs limites.
AWSTOE vérifie les updateBy
valeurs start
end
, et pour s'assurer que la combinaison ne donne pas lieu à une boucle infinie.
for
schéma de boucle
- name: "StepName" action: "ActionModule" loop: name: "string" for: start: int end: int updateBy: int inputs: ...
Champ | Description | Type | Obligatoire | Par défaut |
---|---|---|---|---|
|
Nom unique de la boucle. Il doit être unique par rapport aux autres noms de boucle de la même phase. |
Chaîne |
Non |
"" |
|
Valeur de départ de l'itération. N'accepte pas le chaînage d'expressions. |
Entier |
Oui |
N/A |
|
Valeur finale de l'itération. N'accepte pas le chaînage d'expressions. | Entier | Oui | N/A |
|
Différence selon laquelle une valeur itérative est mise à jour par addition. Il doit s'agir d'une valeur négative ou positive différente de zéro. N'accepte pas le chaînage d'expressions. | Entier | Oui | N/A |
for
exemple d'entrée en boucle
- name: "CalculateFileUploadLatencies" action: "ExecutePowerShell" loop: for: start: 100000 end: 1000000 updateBy: 100000 inputs: commands: - | $f = new-object System.IO.FileStream c:\temp\test{{ loop.index }}.txt, Create, ReadWrite $f.SetLength({{ loop.value }}MB) $f.Close() - c:\users\administrator\downloads\latencyTest.exe --file c:\temp\test{{ loop.index }}.txt - AWS s3 cp c:\users\administrator\downloads\latencyMetrics.json s3://bucket/latencyMetrics.json - | Remove-Item -Path c:\temp\test{{ loop.index }}.txt Remove-Item -Path c:\users\administrator\downloads\latencyMetrics.json
forEach
boucle avec liste d'entrées
La forEach
boucle itère sur une liste explicite de valeurs, qui peuvent être des chaînes ou des expressions enchaînées.
forEach
boucle avec schéma de liste d'entrées
- name: "StepName" action: "ActionModule" loop: name: "string" forEach: - "string" inputs: ...
Champ | Description | Type | Obligatoire | Par défaut |
---|---|---|---|---|
|
Nom unique de la boucle. Il doit être unique par rapport aux autres noms de boucle de la même phase. |
Chaîne |
Non |
"" |
Liste des chaînes de |
Liste des chaînes pour l'itération. Accepte les expressions chaînées sous forme de chaînes dans la liste. Les expressions chaînées doivent être placées entre guillemets pour que le YAML compilateur puisse les interpréter correctement. |
Liste de chaînes |
Oui |
N/A |
forEach
boucle avec liste d'entrées, exemple 1
- name: "ExecuteCustomScripts" action: "ExecuteBash" loop: name: BatchExecLoop forEach: - /tmp/script1.sh - /tmp/script2.sh - /tmp/script3.sh inputs: commands: - echo "Count {{ BatchExecLoop.index }}" - sh "{{ loop.value }}" - | retVal=$? if [ $retVal -ne 0 ]; then echo "Failed" else echo "Passed" fi
forEach
boucle avec liste d'entrées, exemple 2
- name: "RunMSIWithDifferentArgs" action: "ExecuteBinary" loop: name: MultiArgLoop forEach: - "ARG1=C:\Users ARG2=1" - "ARG1=C:\Users" - "ARG1=C:\Users ARG3=C:\Users\Administrator\Documents\f1.txt" inputs: commands: path: "c:\users\administrator\downloads\runner.exe" args: - "{{ MultiArgLoop.value }}"
forEach
exemple de boucle avec liste d'entrées 3
- name: "DownloadAllBinaries" action: "S3Download" loop: name: MultiArgLoop forEach: - "bin1.exe" - "bin10.exe" - "bin5.exe" inputs: - source: "s3://bucket/{{ loop.value }}" destination: "c:\temp\{{ loop.value }}"
forEach
boucle avec liste délimitée
La boucle itère sur une chaîne contenant des valeurs séparées par un délimiteur. Pour itérer sur les constituants de la chaîne, utilisez AWSTOE le délimiteur pour diviser la chaîne en un tableau adapté à l'itération.
forEach
boucle avec schéma de liste délimité
- name: "StepName" action: "ActionModule" loop: name: "string" forEach: list: "string" delimiter: ".,;:\n\t -_" inputs: ...
Champ | Description | Type | Obligatoire | Par défaut |
---|---|---|---|---|
|
Nom unique attribué à la boucle. Il doit être unique par rapport aux autres noms de boucles de la même phase. |
Chaîne |
Non |
"" |
|
Chaîne composée de chaînes constitutives reliées par un caractère délimiteur commun. Accepte également les expressions chaînées. Dans le cas d'expressions chaînées, assurez-vous qu'elles sont placées entre guillemets pour une interprétation correcte par le YAML compilateur. | Chaîne |
Oui |
N/A |
|
Caractère utilisé pour séparer les chaînes d'un bloc. La virgule est la virgule par défaut. Un seul caractère délimiteur est autorisé dans la liste donnée :
Les expressions de chaînage ne peuvent pas être utilisées. |
Chaîne | Non | Virgule : "," |
Note
La valeur de list
est traitée comme une chaîne immuable. Si la source de list
est modifiée pendant l'exécution, elle ne sera pas reflétée pendant l'exécution.
forEach
boucle avec liste délimitée, exemple 1
Cet exemple utilise le modèle d'expression de chaînage suivant pour faire référence à la sortie d'une autre étape :<phase_name>.<step_name>.[inputs | outputs].<var_name>
.
- name: "RunMSIs" action: "ExecuteBinary" loop: forEach: list: "{{ build.GetAllMSIPathsForInstallation.outputs.stdout }}" delimiter: "\n" inputs: commands: path: "{{ loop.value }}"
forEach
boucle avec liste délimitée, exemple 2
- name: "UploadMetricFiles" action: "S3Upload" loop: forEach: list: "/tmp/m1.txt,/tmp/m2.txt,/tmp/m3.txt,..." inputs: commands: - source: "{{ loop.value }}" destination: "s3://bucket/key/{{ loop.value }}"
Champs d'étape
Les boucles font partie d'une étape. Aucun champ lié à l'exécution d'une étape n'est appliqué aux itérations individuelles. Les champs d'étape s'appliquent uniquement au niveau de l'étape, comme suit :
-
timeoutSeconds— Toutes les itérations de la boucle doivent être exécutées dans le délai spécifié dans ce champ. Si le délai d'exécution de la boucle expire, AWSTOE exécute la politique de nouvelle tentative de l'étape et réinitialise le paramètre de délai d'expiration pour chaque nouvelle tentative. Si le délai d'exécution de la boucle dépasse le délai d'expiration après avoir atteint le nombre maximal de tentatives, le message d'échec de l'étape indique que le délai d'exécution de la boucle a expiré.
-
onFailure— La gestion des défaillances est appliquée à l'étape comme suit :
-
S'il onFailureest défini sur
Abort
, AWSTOE quitte la boucle et recommence l'étape conformément à la politique de relance. Une fois le nombre maximal de tentatives atteint, AWSTOE marque l'étape en cours comme ayant échoué et arrête l'exécution du processus.AWSTOE définit le code d'état de la phase parent et du document sur
Failed
.Note
Aucune autre étape n'est exécutée après l'échec de l'étape.
-
S'il onFailureest défini sur
Continue
, AWSTOE quitte la boucle et recommence l'étape conformément à la politique de relance. Une fois le nombre maximal de tentatives atteint, AWSTOE marque l'étape en cours comme ayant échoué et passe à l'étape suivante.AWSTOE définit le code d'état de la phase parent et du document sur
Failed
. -
S'il onFailureest défini sur
Ignore
, AWSTOE quitte la boucle et recommence l'étape conformément à la politique de relance. Une fois le nombre maximal de tentatives atteint, AWSTOE marque l'étape en cours comme telleIgnoredFailure
et passe à l'étape suivante.AWSTOE définit le code d'état de la phase parent et du document sur
SuccessWithIgnoredFailure
.Note
Ceci est toujours considéré comme une exécution réussie, mais inclut des informations vous indiquant qu'une ou plusieurs étapes ont échoué et ont été ignorées.
-
maxAttempts — À chaque nouvelle tentative, l'étape complète et toutes les itérations sont exécutées depuis le début.
status — État général de l'exécution d'une étape.
status
ne représente pas le statut des itérations individuelles. Le statut d'une étape comportant des boucles est déterminé comme suit :Si une seule itération échoue, le statut d'une étape indique un échec.
Si toutes les itérations aboutissent, le statut d'une étape indique un succès.
startTime — L'heure de début globale de l'exécution d'une étape. Ne représente pas l'heure de début des itérations individuelles.
endTime — L'heure de fin globale de l'exécution d'une étape. Ne représente pas l'heure de fin des itérations individuelles.
failureMessage — Inclut les indices d'itération qui ont échoué en cas d'erreurs autres que le délai d'expiration. En cas d'erreur de temporisation, le message indique que l'exécution de la boucle a échoué. Les messages d'erreur individuels pour chaque itération ne sont pas fournis afin de minimiser la taille des messages d'échec.
Sorties d'étape et d'itération
Chaque itération contient une sortie. À la fin d'une exécution en boucle, AWSTOE consolide toutes les sorties d'itération réussies dans. detailedOutput.json
Les sorties consolidées sont un assemblage de valeurs appartenant aux clés de sortie correspondantes telles que définies dans le schéma de sortie du module d'action. L'exemple suivant montre comment les sorties sont consolidées :
Sortie de ExecuteBash
pour l'itération 1
{ "stdout":"Hello" }
Sortie de ExecuteBash
pour l'itération 2
{ "stdout":"World" }
Sortie de ExecuteBash
for Step
{ "stdout":"Hello\nWorld" }
Par exemple, ExecuteBash
ExecutePowerShell
, et ExecuteBinary
sont des modules d'action qui renvoient STDOUT
en tant que sortie du module d'action. STDOUT
les messages sont joints au nouveau caractère de ligne pour produire le résultat global de l'étape d'introductiondetailedOutput.json
.
AWSTOE ne consolidera pas les résultats des itérations infructueuses.