Saat menggunakan Alibaba Cloud CLI untuk memanggil API, Anda mungkin perlu mengambil seluruh data terpaginasi sekaligus, menunggu hingga sumber daya selesai dibuat sebelum melanjutkan, atau memverifikasi kebenaran perintah tanpa benar-benar mengeksekusinya. Topik ini menjelaskan parameter global yang mendukung ketiga skenario tersebut beserta cara mengonfigurasinya.
Pilih parameter yang tepat
Ketiganya merupakan parameter global yang berlaku untuk satu panggilan API. Pilih parameter sesuai skenario Anda:
|
Skenario |
Parameter |
|
API List hanya mengembalikan satu halaman, tetapi Anda memerlukan semua data |
|
|
Menunggu status sumber daya menjadi siap setelah pembuatan |
|
|
Memverifikasi kebenaran perintah tanpa benar-benar mengeksekusinya |
|
Aturan saling eksklusif
-
--pagerdan--waitertidak dapat digunakan bersamaan. CLI akan mengembalikan error berikut jika Anda menggabungkannya:ERROR: flag --pager is exclusive with --waiter. -
--cli-dry-rundapat digunakan bersama--pageratau--waiter, tetapi permintaan tidak dikirim sehingga pagination dan polling tidak dieksekusi.
Agregasi otomatis semua halaman (--pager)
Penggunaan dasar
Tambahkan --pager ke API List/Describe apa pun yang mendukung pagination. CLI secara otomatis melakukan iterasi melalui semua halaman dan menggabungkan hasilnya menjadi satu output.
aliyun ecs describe-instances --biz-region-id cn-hangzhou --pager
Dua mode paginasi
CLI secara otomatis menentukan mode yang akan digunakan. Tidak diperlukan konfigurasi manual.
-
PageNumbermode: Respons API berisi bidangPageNumber,PageSize, danTotalCount. CLI menambah nomor halaman hingga semua halaman diambil. -
NextTokenmode: Respons API berisi bidangNextToken. CLI meneruskan nilaiNextTokenyang dikembalikan sebagai parameter permintaan berikutnya hinggaNextTokenberupa string kosong.
Jika respons berisi bidang NextToken dengan nilai tidak kosong, mode NextToken digunakan. Jika tidak, mode PageNumber digunakan.
Pemetaan bidang
Sub-parameter berikut semuanya opsional. Anda hanya perlu menentukannya ketika API menggunakan nama bidang non-default untuk informasi pagination agar CLI mengetahui nama bidang yang digunakan oleh API tersebut. Dalam kebanyakan kasus, cukup tambahkan --pager.
|
Sub-parameter |
Default |
Kapan perlu ditentukan |
|
|
(tidak ada) |
Path array data dalam respons tidak berada di level teratas (misalnya, |
|
|
PageNumber |
API menggunakan nama bidang berbeda untuk nomor halaman |
|
|
PageSize |
API menggunakan nama bidang berbeda untuk ukuran halaman |
|
|
TotalCount |
API menggunakan nama bidang berbeda untuk jumlah total catatan |
|
|
NextToken |
API menggunakan nama bidang berbeda untuk token pagination |
Sintaksis: --pager key=value key=value. Beberapa sub-parameter dipisahkan dengan spasi. Nilai value adalah nama bidang aktual dalam respons API, bukan nilai tertentu. Misalnya, PageNumber=CurrentPage berarti API menggunakan bidang CurrentPage untuk merepresentasikan nomor halaman, bukan bahwa Anda menentukan halaman awal.
Contoh pemetaan bidang kustom
Array data tersarang di Vpcs.Vpc[] dalam respons API:
aliyun vpc describe-vpcs --biz-region-id cn-hangzhou --pager path=Vpcs.Vpc[]
API menggunakan Token alih-alih NextToken (xxx dan list-yyy adalah perintah placeholder):
aliyun xxx list-yyy --biz-region-id cn-hangzhou --pager NextToken=Token
Menunggu status sumber daya (--waiter)
Penggunaan dasar
CLI berulang kali memanggil perintah saat ini, mengekstrak nilai dari setiap respons menggunakan ekspresi expr, dan berhenti melakukan polling ketika nilai yang diekstrak sama dengan nilai to, lalu mengembalikan respons terakhir. Saat timeout dan interval tidak ditentukan, CLI melakukan polling setiap 5 detik dengan durasi maksimum 180 detik (3 menit) secara default.
aliyun ecs describe-instances \
--biz-region-id cn-hangzhou \
--instance-ids '["i-bp1xxxxx"]' \
--waiter expr='Instances.Instance[0].Status' to=Running
Sub-parameter
|
Sub-parameter |
Wajib |
Default |
Rentang nilai |
Deskripsi |
|
|
Ya |
— |
— |
Ekspresi JMESPath yang menentukan bidang yang akan dipoll dalam respons JSON. |
|
|
Ya |
— |
— |
Nilai target. Polling berhenti dan data dikembalikan ketika hasil |
|
|
Tidak |
180 |
1–600 (detik) |
Durasi maksimum menunggu polling. Jika nilai target tidak tercapai dalam periode ini, CLI mengembalikan error dan keluar. |
|
|
Tidak |
5 |
2–10 (detik) |
Interval antara dua upaya polling. |
-
Bidang yang dirujuk oleh
exprharus bertipe string. Jika bidang dalam respons API berupa angka atau boolean JSON (true/false), CLI langsung mengembalikan error. -
Nilai
toselalu dibandingkan sebagai string. Untuk status numerik, tulisto=1(bukanto=1.0). Jika API mengembalikan boolean sebagai string (misalnya,"true"), tulisto=true. -
Jika panggilan API mengembalikan error HTTP selama polling, CLI langsung berhenti dan menampilkan error tanpa mencoba ulang.
-
Saat periode
timeouthabis tanpa mencocokkan nilai target, CLI keluar dengan kode exit non-nol dan menampilkan hal berikut kestderr:wait 'Instances.Instance[0].Status' to 'Running' timeout(180seconds), last='Pending'Nilai
lastadalah nilai aktual yang diperoleh dari polling terakhir.
Kontrol frekuensi polling
Perpendek interval polling (tunggu maksimal 30 detik, polling setiap 2 detik):
aliyun ecs describe-instances \
--biz-region-id cn-hangzhou \
--instance-ids '["i-bp1xxxxx"]' \
--waiter expr='Instances.Instance[0].Status' to=Running timeout=30 interval=2
Perpanjang waktu tunggu untuk sumber daya yang membutuhkan waktu lebih lama untuk mulai (tunggu hingga 10 menit, polling setiap 10 detik):
aliyun ecs describe-instances \
--biz-region-id cn-hangzhou \
--instance-ids '["i-bp1xxxxx"]' \
--waiter expr='Instances.Instance[0].Status' to=Running timeout=600 interval=10
Verifikasi perintah tanpa mengeksekusi (--cli-dry-run)
Penggunaan dasar
Switch boolean yang aktif saat ditambahkan. Tidak perlu memberikan nilai. CLI menyusun permintaan lengkap, mencetak detail permintaan, tetapi tidak mengirimnya ke server.
aliyun ecs describe-instances --biz-region-id cn-hangzhou --cli-dry-run
Konten output
Output mencakup: metode HTTP, Endpoint, API Action, dan Query Parameters. Anda dapat menggunakannya untuk memverifikasi apakah endpoint sudah benar dan apakah serialisasi parameter sesuai harapan.
Contoh output:
============================================================
DRY-RUN MODE: Request Details (No actual API call)
============================================================
Method: POST
URL:
Endpoint: ecs.cn-hangzhou.aliyuncs.com
API Version: 2014-05-26
API Action: DescribeInstances
Protocol: HTTPS
Style: RPC
Query Parameters:
RegionId: cn-hangzhou
============================================================
Request NOT sent (dry-run mode)
============================================================
{
"message": "dry-run mode - no request sent"
}
Skenario umum
-
Pratinjau sebelum mengeksekusi operasi sensitif (seperti
delete-instanceataustop-instance). Setelah memastikan parameter sudah benar, hapus--cli-dry-rununtuk mengeksekusi. -
Memverifikasi kebenaran penyusunan perintah dalam pipeline CI/CD (tanpa mengonsumsi sumber daya atau menimbulkan biaya).
Skenario otomatisasi: alur kerja async lengkap
Skenario: Buat VPC, tunggu hingga status menjadi tersedia, lalu ambil daftar lengkap VPC. Berikut ini menunjukkan bagaimana ketiga parameter bekerja bersama untuk menyelesaikan operasi async.
Langkah 1: Verifikasi perintah pembuatan dengan --cli-dry-run
aliyun vpc create-vpc \
--biz-region-id cn-hangzhou \
--cidr-block 172.16.0.0/12 \
--vpc-name test-vpc \
--cli-dry-run
Setelah memastikan Endpoint dan serialisasi parameter sudah benar, hapus --cli-dry-run untuk mengeksekusi.
Langkah 2: Eksekusi pembuatan dan ekstrak ID VPC
VPC_ID=$(aliyun vpc create-vpc \
--biz-region-id cn-hangzhou \
--cidr-block 172.16.0.0/12 \
--vpc-name test-vpc \
--cli-query 'VpcId')
--cli-query mengekstrak ID VPC dari respons.
Langkah 3: Tunggu instans menjadi siap dengan --waiter
CLI melakukan polling setiap 5 detik hingga status berubah menjadi Available atau timeout 60 detik tercapai:
aliyun vpc describe-vpcs \
--biz-region-id cn-hangzhou \
--vpc-id "$VPC_ID" \
--waiter expr='Vpcs.Vpc[0].Status' to=Available timeout=60
Langkah 4: Ambil semua VPC dengan --pager
Saat Anda memiliki banyak VPC, tanpa --pager hanya halaman pertama yang dikembalikan dan VPC baru mungkin tidak terlihat. Gunakan --pager untuk memastikan VPC yang baru dibuat muncul dalam daftar:
aliyun vpc describe-vpcs --biz-region-id cn-hangzhou --pager
Langkah 5: Hapus VPC (opsional)
Hapus VPC yang dibuat sebelumnya:
aliyun vpc delete-vpc --vpc-id $VPC_ID
FAQ
Dapatkah --pager dan --waiter digunakan bersamaan?
Tidak. Keduanya saling eksklusif. CLI akan mengembalikan error berikut: ERROR: flag --pager is exclusive with --waiter. Jika Anda perlu menunggu sumber daya menjadi siap lalu mengambil daftar lengkapnya, gunakan dua perintah terpisah.