aws:loop — オートメーション内のステップを反復処理します。 - AWS Systems Manager

aws:loop — オートメーション内のステップを反復処理します。

このアクションは、オートメーションランブック内のステップのサブセットを反復処理します。do while または for each スタイルループを選択できます。do while ループを作成するには、LoopCondition 入力パラメーターを使用します。for each ループを作成するには、IteratorsIteratorDataType 入力パラメーターを使用します。aws:loop アクションを使用するときは、Iterators または LoopCondition 入力パラメータのみを指定してください。最大反復回数は 100 です。

onCancel プロパティを使用できるのは、ループ内で定義されたステップのみです。onCancel プロパティは aws:loop アクションではサポートされていません。aws:loop アクションに onFailure プロパティを使用することはできますが、これが使用されるのは、ステップを失敗させる予期しないエラーが発生した場合のみです。ループ内のステップに onFailure プロパティを定義すると、aws: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
入力

入力は次のとおりです。

イテレーター

ステップを反復処理する項目のリスト。最大反復回数は 100 です。

タイプ: StringList

必須:いいえ

イテレータ/データタイプ

Iterators のデータ型を指定するオプションのパラメータ。このパラメータの値は、Iterators 入力パラメータとともに提供できます。このパラメータ値と Iterators を指定しない場合、LoopCondition パラメータ値を指定する必要があります。

型: 文字列

有効な値: ブール値 | 整数 | 文字列 | StringMap

デフォルト: 文字列

必須:いいえ

ループ条件

Variable と評価する演算子条件で構成されます。このパラメータ値を指定しない場合、IteratorsIteratorDataType パラメータ値を指定する必要があります。AndNotOr 演算子の組み合わせを使用して、複雑な演算子の評価を使用できます。条件はループ内のステップが完了した後に評価されます。条件が true で、MaxIterations 値に達していない場合は、ループ内のステップが再び実行されます。オペレータの条件は以下のとおりです。

文字列演算子
  • StringEquals

  • EqualsIgnoreCase

  • StartsWith

  • EndsWith

  • Contains

数値演算子
  • NumericEquals

  • NumericGreater

  • NumericLesser

  • NumericGreaterOrEquals

  • NumericLesser

  • NumericLesserOrEquals

ブール演算子
  • BooleanEquals

型: StringMap

必須:いいえ

最大反復回数

ループ内のステップの最大実行回数。この入力に指定された値に達すると、LoopConditiontrue でも、または Iterators パラメータにオブジェクトが残っていても、ループの実行は停止します。

型: 整数

有効な値: 1~100

必須:いいえ

ステップ

ループで実行するステップのリスト。これらはネストされたランブックのように機能します。これらのステップでは、{{loopStepName.CurrentIteratorValue}} 構文を使用して for each ループの現在のイテレーター値にアクセスできます。{{loopStepName.CurrentIteration}} 構文を使用して、両方のループタイプの現在の反復の整数値にアクセスすることもできます。

タイプ: ステップのリスト

必須:はい

出力
CurrentIteration

現在のループ反復を整数で表したもの。反復値は 1 から始まります。

型: 整数

現在のイテレータ値

現在のイテレータの値を文字列で表したもの。この出力は for each ループ内にのみ存在します。

型: 文字列