

• O AWS Systems Manager CloudWatch Dashboard não estará mais disponível a partir de 30 de abril de 2026. Os clientes podem continuar usando o console do Amazon CloudWatch para visualizar, criar e gerenciar os painéis do Amazon CloudWatch exatamente como fazem hoje. Para obter mais informações, consulte a [documentação do Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

# `aws:loop`: itera nas etapas de uma automação
<a name="automation-action-loop"></a>

Essa ação itera em um subconjunto de etapas em um runbook de automação. Você pode escolher um loop de estilo `do while` ou `for each`. Para construir um loop `do while`, use o parâmetro de entrada `LoopCondition`. Para construir um loop `for each`, use os parâmetros de entrada `Iterators` e `IteratorDataType`. Ao usar uma ação `aws:loop`, especifique somente o parâmetro de entrada `Iterators` ou `LoopCondition`. O número máximo de iterações é 100.

A propriedade `onCancel` só pode ser usada para etapas definidas em um loop. A propriedade `onCancel` não é compatível com a ação `aws:loop`. A propriedade `onFailure` pode ser usada para uma ação `aws:loop`, mas ela só será usada se ocorrer um erro inesperado causando a falha da etapa. Se você definir propriedades `onFailure` para as etapas em um loop, a ação `aws:loop` herdará essas propriedades e reagirá adequadamente quando ocorrer uma falha.

**Exemplos**  
Veja a seguir exemplos de como criar os diferentes tipos de ações de loop.

------
#### [ 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**  
Veja a entrada a seguir.

Iteradores  
A lista de itens sobre os quais as etapas devem ser iteradas. O número máximo de iteradores é 100.  
Tipo: StringList  
Obrigatório: não

IteratorDataType  
Um parâmetro opcional para especificar o tipo de dados dos `Iterators`. Um valor para esse parâmetro pode ser fornecido junto com o parâmetro de entrada `Iterators`. Se você não especificar um valor para esse parâmetro e `Iterators`, deverá especificar um valor para o parâmetro `LoopCondition`.  
Tipo: string  
Valores válidos: Boolean \| Integer \| String \| StringMap  
Padrão: String  
Obrigatório: não

LoopCondition  
Consiste em uma `Variable` e uma condição do operador a ser avaliada. Se você não especificar um valor para esse parâmetro, deverá especificar um valor para os parâmetros `Iterators` e `IteratorDataType`. Você pode usar avaliações complexas de operadores usando uma combinação dos operadores `And`, `Not` e `Or`. A condição é avaliada após a conclusão das etapas do loop. Se a condição for `true` e o valor `MaxIterations` não tiver sido atingido, as etapas do loop serão executadas novamente. As condições do operador são as seguintes:  

**Operações de string**
+ StringEquals
+ EqualsIgnoreCase
+ StartsWith
+ EndsWith
+ Contém

**Operações numéricas**
+ NumericEquals
+ NumericGreater
+ NumericLesser
+ NumericGreaterOrEquals
+ NumericLesser
+ NumericLesserOrEquals

**Operação booleana**
+ BooleanEquals
Tipo: StringMap  
Obrigatório: não

MaxIterations  
O número máximo de vezes que as etapas do loop são executadas. Quando o valor especificado para essa entrada é atingido, o loop para de ser executado mesmo se `LoopCondition` ainda for `true` ou se houver objetos restantes no parâmetro `Iterators`.  
Tipo: inteiro  
Valores válidos: 1 a 100  
Obrigatório: não

Etapas  
A lista de etapas a serem executadas no loop. Elas funcionam como um runbook aninhado. Nessas etapas, você pode acessar o valor atual do iterador de um loop `for each` usando a sintaxe `{{loopStepName.CurrentIteratorValue}}`. Você também pode acessar um valor inteiro da iteração atual para os dois tipos de loop usando a sintaxe `{{loopStepName.CurrentIteration}}`.  
Type: Lista de etapas  
Obrigatório: SimOutput

CurrentIteration  
A iteração atual do loop como um número inteiro. Os valores de iteração começam em 1.  
Tipo: inteiro

CurrentIteratorValue  
O valor do iterador atual como uma string. Essa saída só está presente em loops `for each`.  
Tipo: string