aws:loop – 迭代自动化中的步骤 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

aws:loop – 迭代自动化中的步骤

此操作在自动化运行手册中的步骤子集上进行迭代。您可以选择 do whilefor each 样式循环。要构造 do while 循环,请使用 LoopCondition 输入参数。要构造 for each 循环,请使用 IteratorsIteratorDataType 输入参数。使用 aws:loop 操作时,请仅指定 IteratorsLoopCondition 输入参数。最大迭代次数为 100。

只能为循环中定义的步骤定义 onCancel 属性。aws:loop 操作不支持 onCancel 属性。

示例

以下是如何构造不同类型的循环操作的示例。

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

必需:否

IteratorDataType

用于指定 Iterators 数据类型的可选参数。可将此参数的值与 Iterators 输入参数一起提供。如果您没有为此参数和 Iterators 指定值,则必须为 LoopCondition 参数指定值。

类型:字符串

有效值:Boolean | Integer | String | StringMap

默认:字符串

必需:否

LoopCondition

Variable 和要评估的运算符条件组成。如果您没有为此参数指定值,则必须为 IteratorsIteratorDataType 参数指定值。您可以通过组合使用 AndNotOr 运算符来使用复杂的运算符评估。循环中的步骤完成后会对条件进行评估。如果条件为 true 并且尚未达到 MaxIterations 值,则循环中的步骤将再次运行。运算符条件如下:

字符串运算
  • 字符串等于

  • EqualsIgnoreCase

  • StartsWith

  • EndsWith

  • 包含

数值运算
  • NumericEquals

  • NumericGreater

  • NumericLesser

  • NumericGreaterOrEquals

  • NumericLesser

  • NumericLesserOrEquals

布尔运算
  • BooleanEquals

类型:StringMap

必需:否

MaxIterations

循环中步骤运行的最大次数。一旦达到为此输入指定的值,即使 LoopCondition 仍是 true,或者 Iterators 参数中仍然存在对象,循环也会停止运行。

类型:整数

有效值:1-100

必需:否

步骤

要在循环中运行的步骤列表。这些功能类似于嵌套运行手册。在这些步骤中,您可以使用语法 {{loopStepName.CurrentIteratorValue}} 访问 for each 循环的当前迭代器值。您还可以使用语法 {{loopStepName.CurrentIteration}} 访问两种循环类型的当前迭代的整数值。

类型:步骤列表

必需:是

输出
CurrentIteration

当前循环迭代为整数。迭代值从 1 开始。

类型:整数

CurrentIteratorValue

当前迭代器的值为字符串。此输出仅存在于 for each 循环中。

类型:字符串