aws:loop — Repita los pasos en una automatización - AWS Systems Manager

aws:loop — Repita los pasos en una automatización

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
Entrada

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

Operaciones numéricas
  • 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: entero

Valores válidos: 1 - 100

Obligatorio: no

Pasos

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í

Salida
Currentiteration (Iteración actual)

La iteración del bucle actual como número entero. Los valores de iteración comienzan en 1.

Tipo: 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