

• AWS Systems Manager CloudWatch 대시보드는 2026년 4월 30일 이후에는 더 이상 사용할 수 없습니다. 고객은 Amazon CloudWatch 콘솔을 계속 사용하여 현재와 마찬가지로 Amazon CloudWatch 대시보드를 보고, 생성하고, 관리할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 대시보드 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)를 참조하세요.

# `aws:loop`- 자동화의 여러 단계를 반복
<a name="automation-action-loop"></a>

이 작업은 Automation 런북의 일부 하위 단계를 반복합니다. `do while` 또는 `for each` 스타일 루프를 선택할 수 있습니다. `do while` 루프를 구성하려면 `LoopCondition` 입력 파라미터를 사용합니다. `for each` 루프를 구성하려면 `Iterators` 및 `IteratorDataType` 입력 파라미터를 사용합니다. `aws:loop` 작업을 사용할 때는 `Iterators` 또는 `LoopCondition` 입력 파라미터 중 하나만 지정하십시오. 최대 반복 횟수는 100회입니다.

`onCancel` 속성은 루프 내에 정의된 단계에 대해서만 사용할 수 있습니다. 해당 `onCancel` 속성은 `aws:loop` 작업에 지원되지 않습니다. `onFailure` 속성은 `aws:loop` 작업에 사용할 수 있지만 예상치 못한 오류가 발생하여 단계가 실패하는 경우에만 사용됩니다. 루프 내 단계에 대해 `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
```

------

**Input**  
입력은 다음과 같습니다.

반복자  
반복할 단계의 항목 목록입니다. 최대 반복자 수는 100입니다.  
유형: StringList  
필수 여부: 아니요

IteratorDataType  
`Iterators`의 데이터 유형을 지정하는 선택적 파라미터입니다. 이 파라미터의 값은 `Iterators` 입력 파라미터와 함께 제공될 수 있습니다. 이 파라미터와 `Iterators` 값을 지정하지 않으면 `LoopCondition` 파라미터의 값을 지정해야 합니다.  
유형: 문자열  
유효한 값: Boolean \| Integer \| String \| StringMap  
기본값: 문자열  
필수 여부: 아니요

LoopCondition  
평가할 `Variable` 및 연산자 조건으로 구성됩니다. 이 파라미터의 값을 지정하지 않으면 `Iterators` 및 `IteratorDataType` 파라미터의 값을 지정해야 합니다. `And`, `Not`, `Or` 연산자를 조합하여 복잡한 연산자 평가를 사용할 수 있습니다. 조건은 루프의 단계가 완료된 후에 평가됩니다. 조건이 `true`에 해당하고 `MaxIterations` 값에 도달하지 않은 경우 루프의 단계가 다시 실행됩니다. 연산자 조건은 다음과 같습니다.  

**문자열 연산**
+ StringEquals
+ 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` 루프에만 표시됩니다.  
유형: 문자열