

• El panel de AWS Systems Manager CloudWatch dejará de estar disponible después del 30 de abril de 2026. Los clientes pueden seguir utilizando la consola de Amazon CloudWatch para ver, crear y administrar sus paneles de Amazon CloudWatch, tal y como lo hacen actualmente. Para obtener más información, consulte la [documentación del panel de Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

# `aws:loop` — Repita los pasos en una automatización
<a name="automation-action-loop"></a>

Esta acción se repite en un subconjunto de pasos de un manual de procedimientos de automatización. Puede elegir un bucle de estilo `do while` o `for each`. Para construir un bucle `do while`, utilice el parámetro de entrada `LoopCondition`. Para construir un bucle `for each`, utilice los parámetros de entrada `Iterators` y `IteratorDataType`. Cuando utilice una acción `aws:loop`, especifique únicamente el parámetro de entrada `Iterators` o `LoopCondition`. El número máximo de veces que se van a ejecutar es de 100.

La propiedad `onCancel` solo se puede utilizar para los pasos definidos dentro de un bucle. La propiedad `onCancel` no es compatible con la acción `aws:loop`. La propiedad `onFailure` se puede usar para una acción `aws:loop`, pero solo se usará si se produce un error inesperado que provoque un error en el paso. Si define propiedades `onFailure` para los pasos de un bucle, la acción `aws:loop` hereda esas propiedades y reacciona en consecuencia cuando se produce un error.

**Ejemplos**  
A continuación se muestran ejemplos de cómo construir los distintos tipos de acciones de bucle.

------
#### [ 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**  
La entrada es la siguiente.

Iteradores  
La lista de elementos sobre los que se deben iterar los pasos. El número máximo de iteradores es 100.  
Tipo: StringList  
Obligatorio: no

IteratorDataType (Tipo de datos de iteradores)  
Un parámetro opcional para especificar el tipo de datos del `Iterators`. Se puede proporcionar un valor para este parámetro junto con el parámetro de entrada `Iterators`. Si no especifica un valor para este parámetro y `Iterators`, luego debe especificar un valor para el parámetro `LoopCondition`.  
Tipo: cadena  
Valores válidos: Boolean \| Integer \| String \| StringMap  
Predeterminado: String  
Obligatorio: no

LoopCondition  
Consta de una `Variable` y una condición de operador a evaluar. Si no especifica un valor para este parámetro, debe especificar un valor para los parámetros `Iterators` y `IteratorDataType`. Puede utilizar evaluaciones de operadores complejas mediante una combinación de operadores `And`, `Not` y `Or`. La condición se evalúa una vez completados los pasos del ciclo. Si la condición es `true` y el valor `MaxIterations` no se ha alcanzado, los pasos del bucle se vuelven a ejecutar. Las condiciones del operador son las siguientes:  

**Operaciones de cadena**
+ StringEquals
+ EqualsIgnoreCase
+ StartsWith
+ EndsWith
+ Contiene

**Numeric operations**
+ NumericEquals
+ NumericGreater
+ NumericLesser
+ NumericGreaterOrEquals
+ NumericLesser
+ NumericLesserOrEquals

**Operación booleana**
+ BooleanEquals
Tipo: StringMap  
Obligatorio: no

MaxIterations (Iteraciones máximas)  
Número máximo de veces que se van a ejecutar los pasos del ciclo. Una vez que se alcanza el valor especificado para esta entrada, el bucle deja de ejecutarse incluso si `LoopCondition` aún es `true` o si quedan objetos en el parámetro `Iterators`.  
Tipo: número entero  
Valores válidos: 1 - 100  
Obligatorio: no

Steps  
La lista de pasos que se van a ejecutar en el bucle. Funcionan como un manual de procedimientos anidado. En estos pasos, puede acceder al valor del iterador actual de un bucle `for each` mediante la sintaxis `{{loopStepName.CurrentIteratorValue}}`. También puede acceder a un valor entero de la iteración actual para ambos tipos de bucles mediante la sintaxis `{{loopStepName.CurrentIteration}}`.  
Tipo: lista de pasos  
Obligatorio: síOutput

Currentiteration (Iteración actual)  
La iteración del bucle actual como número entero. Los valores de iteración comienzan en 1.  
Tipo: número entero

CurrentiteratorValue (Valor del iterador actual)  
El valor del iterador actual como una cadena. Esta salida solo está presente en los bucles `for each`.  
Tipo: cadena