Alibaba Cloud CLI ile API çağrıları yaparken tüm sayfalı verileri tek seferde almak, bir kaynağın oluşturulmasını beklemek veya komutu gerçekten çalıştırmadan doğrulamak gerekebilir. Bu konu, bu üç senaryoyu gerçekleştiren genel parametreleri ve bunların nasıl yapılandırılacağını açıklar.
Doğru parametreyi seçin
Üçü de tek bir API çağrısına uygulanan genel parametrelerdir. Senaryonuzuna göre parametre seçin:
|
|
|
|
|
|
|
|
|
|
|
|
Karşılıklı dışlama kuralları
--pagerve--waiterbirlikte kullanılamaz. Bunları birleştirirseniz CLI aşağıdaki hatayı döndürür:ERROR: flag --pager is exclusive with --waiter.--cli-dry-run,--pagerveya--waiterile birlikte kullanılabilir; ancak istek gönderilmediği için sayfalama ve yoklama işlemleri gerçekleşmez.
Tüm sayfaları otomatik olarak birleştirme (--pager)
Temel kullanım
Herhangi bir sayfalı List/Describe API'sine --pager ekleyin. CLI tüm sayfalar arasında otomatik olarak yineleme yapar ve sonuçları tek bir çıktıda birleştirir.
aliyun ecs describe-instances --biz-region-id cn-hangzhou --pager
İki sayfalama modu
CLI hangi modun kullanılacağını otomatik olarak belirler. Manuel yapılandırmaya gerek yoktur.
PageNumber modu: API yanıtı
PageNumber,PageSizeveTotalCountalanlarını içerir. CLI tüm sayfalar alınana kadar sayfa numarasını artırır.NextToken modu: API yanıtı bir
NextTokenalanı içerir. CLINextTokenboş bir dize olana kadar döndürülenNextTokendeğerini sonraki istek parametresi olarak iletir.
Yanıt boş olmayan bir değere sahip NextToken alanı içeriyorsa NextToken modu kullanılır. Aksi takdirde PageNumber modu kullanılır.
Alan eşleme
Aşağıdaki alt parametrelerin tümü isteğe bağlıdır. API'nin sayfalama bilgileri için varsayılan olmayan alan adları kullandığı durumlarda CLI'ye API'nin hangi alan adlarını kullandığını bildirmek için bunları belirtmeniz yeterlidir. Çoğu durumda yalnızca --pager eklemek yeterlidir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sözdizimi: --pager key=value key=value. Birden fazla alt parametre boşlukla ayrılır. value değeri belirli bir değer değil API yanıtındaki gerçek alan adıdır. Örneğin PageNumber=CurrentPage ifadesi başlangıç sayfası belirttiğiniz anlamına gelmez; API'nin sayfa numarasını temsil etmek için CurrentPage alanını kullandığı anlamına gelir.
Özel alan eşleme örnekleri
Veri dizisi API yanıtında Vpcs.Vpc[] içinde iç içe yerleştirilmiştir:
aliyun vpc describe-vpcs --biz-region-id cn-hangzhou --pager path=Vpcs.Vpc[]
API NextToken yerine Token kullanır (xxx ve list-yyy yer tutucu komutlardır):
aliyun xxx list-yyy --biz-region-id cn-hangzhou --pager NextToken=Token
Kaynak durumunu bekleme (--waiter)
Temel kullanım
CLI geçerli komutu tekrarlı olarak çağırır her yanıttan expr ifadesini kullanarak bir değer çıkarır ve çıkarılan değer to değerine eşit olduğunda yoklamayı durdurarak son yanıtı döndürür. timeout ve interval belirtilmediğinde CLI varsayılan olarak 5 saniyede bir olmak üzere maksimum 180 saniye (3 dakika) boyunca yoklama yapar.
aliyun ecs describe-instances \
--biz-region-id cn-hangzhou \
--instance-ids '["i-bp1xxxxx"]' \
--waiter expr='Instances.Instance[0].Status' to=Running
Alt parametreler
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exprtarafından referans verilen alan dize türünde olmalıdır. API yanıtındaki alan bir sayı veya JSON boole değeri (true/false) ise CLI hemen hata döndürür.todeğeri her zaman dize olarak karşılaştırılır. Sayısal durumlar içinto=1.0yerineto=1yazın. API bir boole değerini dize olarak döndürürse (örneğin"true")to=trueyazın.Yoklama sırasında bir API çağrısı HTTP hatası döndürürse CLI yeniden deneme yapmadan hemen durur ve hatayı çıktılar.
-
timeoutsüresi dolup hedef değer eşleşmezse CLI sıfır olmayan bir çıkış koduyla çıkar ve aşağıdakileristderrkanalına yazar:wait 'Instances.Instance[0].Status' to 'Running' timeout(180seconds), last='Pending'lastdeğeri son yoklamadan elde edilen gerçek değerdir.
Yoklama sıklığını kontrol etme
Yoklama aralığını kısaltın (maksimum 30 saniye bekleyin her 2 saniyede bir yoklayın):
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
Başlatılması daha uzun süren kaynaklar için bekleme süresini uzatın (maksimum 10 dakika bekleyin her 10 saniyede bir yoklayın):
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
Komutu çalıştırmadan doğrulama (--cli-dry-run)
Temel kullanım
Eklendiğinde etkili olan bir boole anahtarıdır. Değer atamasına gerek yoktur. CLI tam isteği oluşturur istek ayrıntılarını yazdırır ancak sunucuya göndermez.
aliyun ecs describe-instances --biz-region-id cn-hangzhou --cli-dry-run
Çıktı içeriği
Çıktı şunları içerir: HTTP yöntemi Endpoint API Action ve Query Parameters. endpoint adresinin doğru olup olmadığını ve parametre serileştirmesinin beklendiği gibi olup olmadığını doğrulamak için bunu kullanabilirsiniz.
Örnek çıktı:
============================================================
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"
}
Tipik senaryolar
Hassas işlemleri (
delete-instanceveyastop-instancegibi) yürütmeden önce ön izleme yapın. Parametrelerin doğru olduğunu onayladıktan sonra--cli-dry-runparametresini kaldırarak işlemi yürütün.CI/CD işlem hatlarında komut birleştirme doğruluğunu doğrulayın (kaynak tüketmeden veya maliyet oluşturmadan).
Otomasyon senaryosu: tam eşzamansız iş akışı
Senaryo: Bir VPC oluşturun durum available (kullanılabilir) olana kadar bekleyin ve ardından tam VPC listesini alın. Aşağıda üç parametrenin bir eşzamansız işlemi tamamlamak için birlikte nasıl çalıştığı gösterilmektedir.
Adım 1: Oluşturma komutunu --cli-dry-run ile doğrulayın
aliyun vpc create-vpc \
--biz-region-id cn-hangzhou \
--cidr-block 172.16.0.0/12 \
--vpc-name test-vpc \
--cli-dry-run
Endpoint adresinin ve parametre serileştirmesinin doğru olduğunu onayladıktan sonra --cli-dry-run parametresini kaldırarak işlemi yürütün.
Adım 2: Oluşturmayı yürütün ve VPC ID'sini çıkarın
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, yanıtta VPC ID'sini çıkarır.
Adım 3: Örnek hazır olana kadar --waiter ile bekleyin
CLI durum Available olana veya 60 saniyelik zaman aşımına ulaşılana kadar her 5 saniyede bir yoklama yapar:
aliyun vpc describe-vpcs \
--biz-region-id cn-hangzhou \
--vpc-id "$VPC_ID" \
--waiter expr='Vpcs.Vpc[0].Status' to=Available timeout=60
Adım 4: Tüm VPC'leri --pager ile alın
Çok sayıda VPC'niz varsa --pager olmadan yalnızca ilk sayfa döndürülür ve yeni VPC görünmeyebilir. Yeni oluşturulan VPC'nin listede göründüğünü onaylamak için --pager kullanın:
aliyun vpc describe-vpcs --biz-region-id cn-hangzhou --pager
Adım 5: VPC'yi silin (isteğe bağlı)
Daha önce oluşturulan VPC'yi silin:
aliyun vpc delete-vpc --vpc-id $VPC_ID
SSS
--pager ve --waiter birlikte kullanılabilir mi?
Hayır. Bunlar birbirini dışlar. CLI aşağıdaki hatayı döndürür: ERROR: flag --pager is exclusive with --waiter. Bir kaynağın hazır olmasını beklemeniz ve ardından tam listeyi almanız gerekiyorsa iki ayrı komut kullanın.