aws:loop: intera sui passaggi di un'automazione - AWS Systems Manager

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

aws:loop: intera sui passaggi di un'automazione

Questa azione esegue un'iterazione su un sottoinsieme di passaggi in un runbook di automazione. È possibile scegliere un ciclo di stile do while o for each. Per costruire un ciclo do while, utilizza il parametro di input LoopCondition. Per costruire un ciclo for each, utilizza i parametri di input Iterators e IteratorDataType. Quando utilizzi un'azione aws:loop, specifica solo il parametro di input Iterators o LoopCondition. Il numero massimo di iterazioni è 100.

La onCancel proprietà può essere utilizzata solo per i passaggi definiti all'interno di un ciclo. La proprietà onCancel non è supportata per l'azione aws:loop. La onFailure proprietà può essere utilizzata per un'aws:loopazione, tuttavia verrà utilizzata solo se si verifica un errore imprevisto che causa il fallimento del passaggio. Se si definiscono onFailure le proprietà per i passaggi all'interno di un ciclo, l'aws:loopazione eredita tali proprietà e reagisce di conseguenza quando si verifica un errore.

Esempi

Di seguito sono riportati alcuni esempi di come costruire i diversi tipi di azioni di un ciclo.

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

Di seguito è riportato l'input.

Iterators

L'elenco degli elementi per i passaggi su cui eseguire l'iterazione. Il numero massimo di iteratori è 100.

Tipo: StringList

Campo obbligatorio: no

IteratorDataType

Un parametro facoltativo per specificare il tipo di dati di Iterators. Un valore per questo parametro può essere fornito insieme al parametro di input Iterators. Se non si specifica un valore per questo parametro e Iterators, sarà necessario specificare un valore per il parametro LoopCondition.

Tipo: stringa

Valori validi: Boolean | Integer | String | StringMap

Predefinito: String

Campo obbligatorio: no

LoopCondition

Costituito da una Variable e una condizione dell'operatore da valutare. Se non si specifica un valore per questo parametro, allora sarà necessario specificare i valori per i parametri Iterators e IteratorDataType. È possibile utilizzare valutazioni complesse degli operatori utilizzando una combinazione degli operatori And, Not e Or. La condizione viene valutata dopo il completamento dei passaggi del ciclo. Se la condizione è true e il valore MaxIterations non è stato raggiunto, i passaggi del ciclo saranno eseguiti nuovamente. Le condizioni dell'operatore sono le seguenti:

Operazioni di stringa
  • StringEquals

  • EqualsIgnoreCase

  • StartsWith

  • EndsWith

  • Contiene

Operazioni numeriche
  • NumericEquals

  • NumericGreater

  • NumericLesser

  • NumericGreaterOrEquals

  • NumericLesser

  • NumericLesserOrEquals

Operazioni booleane
  • BooleanEquals

Tipo: StringMap

Campo obbligatorio: no

MaxIterations

Il numero massimo di volte che vengono eseguiti i passaggi del ciclo. Una volta raggiunto il valore specificato per questo input, il ciclo smette di funzionare anche se LoopCondition è ancora true o se ci sono oggetti rimanenti nel parametro Iterators.

Tipo: integer

Valori validi: 1-100

Campo obbligatorio: no

Fasi

L'elenco di passaggi da eseguire nel ciclo. Funzionano come un runbook nidificato. In questi passaggi è possibile accedere al valore corrente dell'iteratore per un ciclo for each utilizzando la sintassi {{loopStepName.CurrentIteratorValue}}. È inoltre possibile accedere a un valore intero dell'iterazione corrente per entrambi i tipi di ciclo utilizzando la sintassi {{loopStepName.CurrentIteration}}.

Tipo: elenco di passaggi

Campo obbligatorio: sì

Output
CurrentIteration

L'iterazione del ciclo corrente come numero intero. I valori di iterazione iniziano da 1.

Tipo: integer

CurrentIteratorValue

Il valore dell'iteratore corrente come stringa. Questo output è presente solo nei cicli for each.

Tipo: stringa