

• AWS Systems Manager CloudWatch Dasbor tidak akan lagi tersedia setelah 30 April 2026. Pelanggan dapat terus menggunakan CloudWatch konsol Amazon untuk melihat, membuat, dan mengelola CloudWatch dasbor Amazon mereka, seperti yang mereka lakukan hari ini. Untuk informasi selengkapnya, lihat [dokumentasi CloudWatch Dasbor Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# `aws:loop`— Ulangi langkah-langkah dalam otomatisasi
<a name="automation-action-loop"></a>

Tindakan ini mengulangi subset langkah dalam runbook otomatisasi. Anda dapat memilih loop `do while` atau `for each` gaya. Untuk membangun `do while` loop, gunakan parameter `LoopCondition` input. Untuk membangun `for each` loop, gunakan parameter `Iterators` dan `IteratorDataType` input. Saat menggunakan `aws:loop` tindakan, hanya tentukan parameter `Iterators` atau `LoopCondition` input. Jumlah maksimum iterasi adalah 100.

`onCancel`Properti hanya dapat digunakan untuk langkah-langkah yang ditentukan dalam loop. `onCancel`Properti tidak didukung untuk `aws:loop` tindakan tersebut. `onFailure`Properti dapat digunakan untuk `aws:loop` tindakan, namun hanya akan digunakan jika terjadi kesalahan tak terduga yang menyebabkan langkah gagal. Jika Anda mendefinisikan `onFailure` properti untuk langkah-langkah dalam loop, `aws:loop` tindakan mewarisi properti tersebut dan bereaksi sesuai ketika kegagalan terjadi.

**Contoh**  
Berikut ini adalah contoh bagaimana membangun berbagai jenis tindakan 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**  
Intputnya adalah sebagai berikut.

Iterator  
Daftar item untuk langkah-langkah untuk mengulangi. Jumlah maksimum iterator adalah 100.  
Jenis: StringList  
Wajib: Tidak

IteratorDataType  
Parameter opsional untuk menentukan tipe data dari file`Iterators`. Nilai untuk parameter ini dapat diberikan bersama dengan parameter `Iterators` input. Jika Anda tidak menentukan nilai untuk parameter ini dan`Iterators`, maka Anda harus menentukan nilai untuk `LoopCondition` parameter tersebut.  
Tipe: String  
Nilai yang valid: Boolean \| Integer \| String \| StringMap  
Default: String  
Wajib: Tidak

LoopCondition  
Terdiri dari kondisi a `Variable` dan operator untuk mengevaluasi. Jika Anda tidak menentukan nilai untuk parameter ini, maka Anda harus menentukan nilai untuk `Iterators` dan `IteratorDataType` parameter. Anda dapat menggunakan evaluasi operator yang kompleks dengan menggunakan kombinasi`And`,`Not`, dan `Or` operator. Kondisi ini dievaluasi setelah langkah-langkah dalam loop selesai. Jika kondisinya `true` dan `MaxIterations` nilainya belum tercapai, langkah-langkah dalam loop berjalan lagi. Kondisi operator adalah sebagai berikut:  

**Operasi String**
+ StringEquals
+ EqualsIgnoreCase
+ StartsWith
+ EndsWith
+ Berisi

**Operasi numerik**
+ NumericEquals
+ NumericGreater
+ NumericLesser
+ NumericGreaterOrEquals
+ NumericLesser
+ NumericLesserOrEquals

**Operasi Boolean**
+ BooleanEquals
Jenis: StringMap  
Wajib: Tidak

MaxIterations  
Jumlah maksimum kali langkah-langkah dalam loop dijalankan. Setelah nilai yang ditentukan untuk input ini tercapai, loop berhenti berjalan bahkan jika `LoopCondition` masih `true` atau jika ada objek yang tersisa dalam `Iterators` parameter.  
Jenis: Integer  
Nilai yang valid: 1 - 100  
Wajib: Tidak

Langkah-langkah  
Daftar langkah-langkah untuk dijalankan dalam loop. Ini berfungsi seperti runbook bersarang. Dalam langkah-langkah ini Anda dapat mengakses nilai iterator saat ini untuk `for each` loop menggunakan sintaks`{{loopStepName.CurrentIteratorValue}}`. Anda juga dapat mengakses nilai integer dari iterasi saat ini untuk kedua jenis loop menggunakan sintaks. `{{loopStepName.CurrentIteration}}`  
Jenis: Daftar langkah  
Wajib: YaOutput

CurrentIteration  
Iterasi loop saat ini sebagai bilangan bulat. Nilai iterasi mulai dari 1.  
Jenis: Integer

CurrentIteratorValue  
Nilai iterator saat ini sebagai string. Output ini hanya ada dalam `for each` loop.  
Tipe: String