全部产品
Search
文档中心

CloudOps Orchestration Service:ACS::WaitFor

更新时间:Jun 28, 2025

Tujuan

Aksi ACS::WaitFor digunakan untuk menunggu hingga suatu sumber daya mencapai status yang diinginkan. Anda dapat memanggil operasi API layanan cloud guna memeriksa status sumber daya tertentu sampai sumber daya tersebut masuk ke dalam status yang dituju. Sebagai contoh, setelah menggunakan operasi RunInstances dari Elastic Compute Service (ECS) untuk membuat instance ECS, Anda dapat menjalankan aksi ACS::WaitFor untuk menunggu hingga instance ECS berstatus Running, yang menandakan bahwa pembuatan instance telah selesai.

Sintaksis

Tasks:
  - Name: waitForTaskExample
    Action: ACS::WaitFor
    Properties: 
      # Atribut berikut ini sama dengan atribut pada aksi ACS::ExecuteAPI. Untuk informasi lebih lanjut, lihat deskripsi sintaksis aksi ACS::ExecuteAPI.
      Service: ECS
      API: DescribeInstances
      Parameters: 
        InstanceId: i-12345678abcedfg
      # Atribut berikut ini adalah atribut unik dari aksi ACS::WaitFor.
      PropertySelector: "jq selector" # Diperlukan. Pemilih untuk memilih hasil API yang akan ditunggu. Dalam contoh ini, pemilih jq digunakan. Untuk informasi lebih lanjut, lihat deskripsi atribut ValueSelector dalam aksi ACS::ExecuteAPI.
      StopRetryValues: # Opsional. Nilai-nilai berdasarkan mana sistem menghentikan tugas tunggu dan percobaan ulang API. Sebagai contoh, jika Anda mengatur atribut ini ke Stopped, sistem akan menghentikan tugas tunggu ketika nilai Stopped terdeteksi.
        - status1
      DesiredValues: # Nilai-nilai yang diharapkan. Jika nilai yang dipilih oleh atribut PropertySelector cocok dengan salah satu nilai yang ditentukan, tugas tunggu berhasil. Jika nilai yang dipilih oleh atribut PropertySelector tidak cocok dengan salah satu nilai yang ditentukan, tugas tunggu gagal karena waktu habis. Anda harus menentukan salah satu atribut DesiredValues atau NotDesiredValues.
        - value1
        - value2
      NotDesiredValues: # Nilai-nilai yang tidak diharapkan. Jika nilai yang dipilih oleh atribut PropertySelector tidak cocok dengan salah satu nilai yang ditentukan, tugas tunggu berhasil. Jika nilai yang dipilih oleh atribut PropertySelector cocok dengan salah satu nilai yang ditentukan, tugas tunggu gagal karena waktu habis. Anda harus menentukan salah satu atribut DesiredValues atau NotDesiredValues.
        - value3
        - value4
    Retries: # Opsional. Jumlah maksimum percobaan ulang. Nilainya harus bilangan bulat positif, seperti 5. Nilai valid: 0 hingga 300. Nilai default: 10.
    DelayType: # Jenis interval percobaan ulang. Nilai valid: Exponential, Constant, dan Linear. Nilai default: Exponential. Interval percobaan ulang jenis Exponential dihitung menggunakan rumus berikut: 2 ^ Jumlah percobaan ulang. Interval percobaan ulang jenis Constant ditentukan oleh atribut Delay. Interval percobaan ulang jenis Linear dihitung menggunakan rumus berikut: Nilai atribut Delay + Nilai atribut BackOff × Jumlah percobaan ulang.
    Delay: # Interval percobaan ulang. Nilainya harus bilangan bulat positif, seperti 10. Nilai 10 menunjukkan bahwa interval percobaan ulang adalah 10 detik. Nilai valid: 1 hingga 3600. Nilai default: 2. Parameter ini diperlukan jika atribut DelayType disetel ke Constant atau Linear.
    BackOff: # Kompensasi interval percobaan ulang. Nilainya harus bilangan bulat positif. Nilai valid: 1 hingga 3600. Nilai default: 2. Parameter ini diperlukan jika atribut DelayType disetel ke Linear.
    MaxRetryInterval: # Interval percobaan ulang maksimum. Nilainya harus bilangan bulat positif. Nilai valid: 1 hingga 1800. Nilai default: 1800. Satuan: detik.
    Outputs: # Parameter keluaran dari tugas tunggu. Jika kondisi NotDesiredValues atau DesiredValues terpenuhi, tugas tunggu berhasil, dan parameter keluaran dikembalikan.
      ValueSelector: # Pemilih jq untuk memilih data yang akan dikembalikan. Pemilih jq mengekstrak informasi dari data JSON yang dikembalikan oleh operasi API. Untuk informasi lebih lanjut tentang sintaks jq, kunjungi https://stedolan.github.io/jq.
      Type: String/Boolean/List(Array)/Number/Object
{
  "Tasks": [
    {
      "Name": "waitForTaskExample",
      "Action": "ACS::WaitFor",
      "Properties": {
        "Service": "ECS",
        "API": "DescribeInstances",
        "Parameters": {
          "InstanceId": "i-12345678abcedfg"
        },
        "PropertySelector": "jq selector",
        "StopRetryValues": [
          "status1"
        ],
        "DesiredValues": [
          "value1",
          "value2"
        ],
        "NotDesiredValues": [
          "value3",
          "value4"
        ]
      },
      "Retries": "# Opsional. Jumlah maksimum percobaan ulang. Nilainya harus bilangan bulat positif, seperti 5. Nilai valid: 0 hingga 300. Nilai default: 10.",
      "DelayType": "# Jenis interval percobaan ulang. Nilai valid: Exponential, Constant, dan Linear. Nilai default: Exponential. Interval percobaan ulang jenis Exponential dihitung menggunakan rumus berikut: 2 ^ Jumlah percobaan ulang. Interval percobaan ulang jenis Constant ditentukan oleh atribut Delay. Interval percobaan ulang jenis Linear dihitung menggunakan rumus berikut: Nilai atribut Delay + Nilai atribut BackOff × Jumlah percobaan ulang.",
      "Delay": "# Interval percobaan ulang. Nilainya harus bilangan bulat positif, seperti 10. Nilai 10 menunjukkan bahwa interval percobaan ulang adalah 10 detik. Nilai valid: 1 hingga 3600. Nilai default: 2. Parameter ini diperlukan jika atribut DelayType disetel ke Constant atau Linear.",
      "BackOff": "# Kompensasi interval percobaan ulang. Nilainya harus bilangan bulat positif. Nilai valid: 1 hingga 3600. Nilai default: 2. Parameter ini diperlukan jika atribut DelayType disetel ke Linear.",
      "MaxRetryInterval": "# Interval percobaan ulang maksimum. Nilainya harus bilangan bulat positif. Nilai valid: 1 hingga 1800. Nilai default: 1800. Satuan: detik.",
      "Outputs": {
        "ValueSelector": "# Pemilih jq untuk memilih data yang akan dikembalikan. Pemilih jq mengekstrak informasi dari data JSON yang dikembalikan oleh operasi API. Untuk informasi lebih lanjut tentang sintaks jq, kunjungi https://stedolan.github.io/jq.",
        "Type": "String/Boolean/List(Array)/Number/Object"
      }
    }
  ]
}

Contoh

Template berikut digunakan untuk memulai instance ECS dan menjalankan aksi ACS::WaitFor guna menunggu hingga instance mencapai status Running.

---
FormatVersion: OOS-2019-06-01
Parameters:
  InstanceId:
    Description: id instance yang akan dimulai.
    Type: String
Tasks:
- Name: startInstance
  Action: ACS::ExecuteAPI
  Description: mulai instance dengan parameter yang ditentukan
  Properties:
    Service: ECS
    API: StartInstance
    Parameters:
      InstanceId: '{{ InstanceId }}'
- Name: untilInstanceReady
  Action: ACS::WaitFor
  Description: deskripsikan instance dengan parameter yang ditentukan
  MaxRetryInterval: 900
  Properties:
    Service: ECS
    API: DescribeInstances
    Parameters:
      InstanceIds:
      - '{{ InstanceId }}'
    PropertySelector: Instances.Instance[].Status
    DesiredValues:
    - Running
{
    "FormatVersion": "OOS-2019-06-01",
    "Parameters": {
        "InstanceId": {
            "Description": "id instance yang akan dimulai.",
            "Type": "String"
        }
    },
    "Tasks": [
        {
            "Name": "startInstance",
            "Action": "ACS::ExecuteAPI",
            "Description": "mulai instance dengan parameter yang ditentukan",
            "Properties": {
                "Service": "ECS",
                "API": "StartInstance",
                "Parameters": {
                    "InstanceId": "{{ InstanceId }}"
                }
            }
        },
        {
            "Name": "untilInstanceReady",
            "Action": "ACS::WaitFor",
            "Description": "deskripsikan instance dengan parameter yang ditentukan",
            "MaxRetryInterval": 900,
            "Properties": {
                "Service": "ECS",
                "API": "DescribeInstances",
                "Parameters": {
                    "InstanceIds": [ "{{ InstanceId }}" ]
                },
                "PropertySelector": "Instances.Instance[].Status",
                "DesiredValues": [ "Running" ]
            }
        }
    ]
}