

• Le AWS Systems Manager CloudWatch tableau de bord ne sera plus disponible après le 30 avril 2026. Les clients peuvent continuer à utiliser CloudWatch la console Amazon pour consulter, créer et gérer leurs CloudWatch tableaux de bord Amazon, comme ils le font aujourd'hui. Pour plus d'informations, consultez la [documentation Amazon CloudWatch Dashboard](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

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.

# `aws:loop` : itérer les étapes d’une automatisation
<a name="automation-action-loop"></a>

Cette action itère sur un sous-ensemble d’étapes dans un runbook d’Automatisation. Vous pouvez sélectionner un style boucle `do while` ou `for each`. Pour construire une boucle `do while`, utilisez le paramètre d’entrée `LoopCondition`. Pour construire une boucle `for each`, utilisez les paramètres d’entrée `Iterators` et `IteratorDataType`. Lorsque vous utilisez une action `aws:loop`, spécifiez uniquement le paramètre d’entrée `Iterators` ou `LoopCondition`. Le nombre maximal d’itérations est de 100.

La propriété `onCancel` ne peut être utilisée que pour les étapes définies dans une boucle. La propriété `onCancel` n’est pas prise en charge pour l’action `aws:loop`. La propriété `onFailure` peut être utilisée pour une action `aws:loop`, mais elle ne sera utilisée que si une erreur inattendue se produit et entraîne l’échec de l’étape. Si vous définissez des propriétés `onFailure` pour les étapes d’une boucle, l’action `aws:loop` hérite de ces propriétés et réagit en conséquence en cas d’échec.

**Exemples**  
Les exemples suivants montrent comment construire les différents types d’actions de boucle.

------
#### [ do while ]

```
name: RepeatMyLambdaFunctionUntilOutputIsReturned
action: aws:loop
inputs:
    Steps:
    - name: invokeMyLambda
        action: aws:invokeLambdaFunction
        inputs:
        FunctionName: LambdaFunctionName
        outputs:
        - Name: ShouldRetry
            Selector: $.Retry
            Type: Boolean
    LoopCondition:
        Variable: "{{ invokeMyLambda.ShouldRetry }}"
        BooleanEquals: true
    MaxIterations: 3
```

------
#### [ for each ]

```
name: stopAllInstancesWithWaitTime
action: aws:loop
inputs:
    Iterators: "{{ DescribeInstancesStep.InstanceIds }}"
    IteratorDataType: "String"
    Steps:
    - name: stopOneInstance
        action: aws:changeInstanceState
        inputs:
        InstanceIds:
            - "{{stopAllInstancesWithWaitTime.CurrentIteratorValue}}"
        CheckStateOnly: false
        DesiredState: stopped
    - name: wait10Seconds
        action: aws:sleep
        inputs:
        Duration: PT10S
```

------

**Input**  
L'entrée est comme suit.

Itérateurs  
La liste des éléments sur lesquels les étapes doivent être itérées. Le nombre maximal d’itérateurs est de 100.  
Type : StringList  
Obligatoire : non

IteratorDataType  
Un paramètre facultatif permettant de spécifier le type de données du `Iterators`. Une valeur pour ce paramètre peut être fournie en même temps que le paramètre d’entrée `Iterators`. Si vous ne spécifiez aucune valeur pour ce paramètre et `Iterators`, vous devez alors spécifier une valeur pour le paramètre `LoopCondition`.  
Type : Chaîne  
Valeurs valides : booléen \| entier \| chaîne \| StringMap  
Par défaut : String  
Obligatoire : non

LoopCondition  
Comprend une `Variable` et une condition de l’opérateur à évaluer. Si vous ne spécifiez aucune valeur pour ce paramètre, vous devez alors spécifier des valeurs pour les paramètres `Iterators` et `IteratorDataType`. Vous pouvez utiliser des évaluations d’opérateurs complexes en combinant les opérateurs `And`, `Not` et `Or`. La condition est évaluée une fois les étapes de la boucle terminées. Si la condition est `true` et que la valeur `MaxIterations` n’a pas été atteinte, les étapes de la boucle sont à nouveau exécutées. Les conditions de l’opérateur sont les suivantes :  

**Opérations de chaîne**
+ StringEquals
+ EqualsIgnoreCase
+ StartsWith
+ EndsWith
+ Contains

**Opérations numériques**
+ NumericEquals
+ NumericGreater
+ NumericLesser
+ NumericGreaterOrEquals
+ NumericLesser
+ NumericLesserOrEquals

**Opération booléenne**
+ BooleanEquals
Type : StringMap  
Obligatoire : non

MaxIterations  
Le nombre maximal de fois où les étapes de la boucle sont exécutées. Une fois que la valeur spécifiée pour cette entrée est atteinte, la boucle cesse de fonctionner même si `LoopCondition` est encore `true` ou s’il reste des objets dans le paramètre `Iterators`.  
Type : Integer  
Valeurs valides : de 1 à 100  
Obligatoire : non

Étapes  
Liste des étapes à exécuter dans la boucle. Elles fonctionnent comme un runbook imbriqué. Au cours de ces étapes, vous pouvez accéder à la valeur actuelle de l’itérateur pour une boucle `for each` à l’aide de la syntaxe `{{loopStepName.CurrentIteratorValue}}`. Vous pouvez également accéder à une valeur entière de l’itération en cours pour les deux types de boucle à l’aide de la syntaxe `{{loopStepName.CurrentIteration}}`.  
Type : liste des étapes  
Obligatoire : ouiOutput

CurrentIteration  
L’itération de boucle en cours sous forme d’entier. Valeur des itérations commençant à 1.  
Type : Integer

CurrentIteratorValue  
Valeur de l’itérateur actuel sous forme de chaîne. Cette sortie n’est présente que dans les boucles `for each`.  
Type : Chaîne