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" ]
}
}
]
}