aws:loop: itera nas etapas de uma automação - AWS Systems Manager

aws:loop: itera nas etapas de uma automação

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
Entrada

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: número 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: Sim

Saída
CurrentIteration

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

Tipo: número inteiro

CurrentIteratorValue

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

Tipo: string