Zaman uyumsuz Azure işlemlerini izleme
İşlem hızlı bir şekilde tamamlanamadığından bazı Azure REST işlemleri zaman uyumsuz olarak çalışır. Bu makalede, yanıtta döndürülen değerler aracılığıyla zaman uyumsuz işlemlerin durumunun nasıl izlenmesi açıklanır.
Zaman uyumsuz işlemler için durum kodları
Zaman uyumsuz bir işlem başlangıçta aşağıdakilerden birinin HTTP durum kodunu döndürür:
- 201 (Oluşturuldu)
- 202 (Kabul Edildi)
Ancak, bu durum kodu işlemin zaman uyumsuz olduğu anlamına gelmez. Zaman uyumsuz bir işlem, işlemin tamamlanmadığını gösteren değerini provisioningState
de döndürür. Değer işleme göre farklılık gösterebilir ancak Başarılı, Başarısız veya İptal Edildi değerlerini içermez. Bu üç değer işlemin bittiğini gösterir. için provisioningState
hiçbir değer döndürülmezse işlem tamamlanır ve başarılı olur.
İşlem başarıyla tamamlandığında aşağıdakilerden birini döndürür:
- 200 (Tamam)
- 204 (İçerik Yok)
Yürütmekte olduğunuz işlemin yanıtlarını görmek için REST API belgelerine bakın.
201 veya 202 yanıt kodunu aldıktan sonra işlemin durumunu izlemeye hazırsınız demektir.
durumu izlemek için URL
Zaman uyumsuz işlemin durumunu izlemenin iki farklı yolu vardır. Özgün isteğinizden döndürülen üst bilgi değerlerini inceleyerek doğru yaklaşımı belirlersiniz. İlk olarak şunları arayın:
Azure-AsyncOperation
- İşlemin devam eden durumunu denetlemek için URL. İşleminiz bu değeri döndürürse, işlemin durumunu izlemek için bu değeri kullanın.Retry-After
- Zaman uyumsuz işlemin durumunu denetlemeden önce beklenmesi gereken saniye sayısı.
Üst bilgi değerlerinden biri değilse Azure-AsyncOperation
aşağıdakileri arayın:
Location
- bir işlemin ne zaman tamamlandığını belirlemek için URL. Bu değeri yalnızcaAzure-AsyncOperation
döndürülmezse kullanın.Retry-After
- Zaman uyumsuz işlemin durumunu denetlemeden önce beklenmesi gereken saniye sayısı.
Retry-after
Üst bilgi döndürülmezse kendi yeniden deneme mantığınızı uygulayın.
Dekont
REST istemciniz ve Location
için Azure-AsyncOperation
en az 4 KB URL boyutunu kabul etmelidir.
Zaman uyumsuz durumu izleme izni
Zaman uyumsuz bir işlemin durumunu izlemek için kaynak grubu düzeyinde yeterli izne sahip olmanız gerekir. Yalnızca kaynak düzeyinde izniniz varsa işlemi başlatabilirsiniz ancak durumunu izleyemezsiniz. İzleme durumu URL'si kaynağın kapsamına girmediğinden kaynak grubu düzeyinde izin gereklidir.
Örneğin, bir sanal makineyi başlatmak için, sanal makineyi içeren kaynak grubu için Sanal Makine Katkıda Bulunanı rolüne ihtiyacınız vardır. Başlangıç isteğini izlemeye yönelik URL, yoluna sanal makineyi içermez.
GET
https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Compute/locations/{region}/operations/{operation-id}?api-version=2019-12-01
Azure-AsyncOperation isteği ve yanıtı
Üst bilgi değerinden Azure-AsyncOperation
bir URL'niz varsa, bu URL'ye bir GET isteği gönderin. Durumunun ne sıklıkta denetleneceklerini zamanlamak için değerini Retry-After
kullanın. İşlemin durumunu gösteren bir yanıt nesnesi alırsınız. URL ile Location
işlemin durumu denetlenirken farklı bir yanıt döndürülür. Konum URL'sinden gelen yanıt hakkında daha fazla bilgi için bkz . Depolama hesabı oluşturma (Konum ile 202 ve Yeniden Dene-Sonra).
Yanıt özellikleri farklılık gösterebilir ancak her zaman zaman uyumsuz işlemin durumunu içerir.
{
"status": "{status-value}"
}
Aşağıdaki örnekte, işlemden döndürülebilecek diğer değerler gösterilmektedir:
{
"id": "{resource path from GET operation}",
"name": "{operation-id}",
"status" : "Succeeded | Failed | Canceled | {resource provider values}",
"startTime": "2017-01-06T20:56:36.002812+00:00",
"endTime": "2017-01-06T20:56:56.002812+00:00",
"percentComplete": {double between 0 and 100 },
"properties": {
/* Specific resource provider values for successful operations */
},
"error" : {
"code": "{error code}",
"message": "{error description}"
}
}
Durum Başarısız veya İptal Edildi olduğunda hata nesnesi döndürülür. Diğer tüm değerler isteğe bağlıdır. Aldığınız yanıt örnekten farklı görünebilir.
provisioningState değerleri
Bir kaynağı oluşturan, güncelleştiren veya silen (PUT, PATCH, DELETE) işlemler genellikle bir provisioningState
değer döndürür. bir işlem tamamlandığında, aşağıdaki üç değerden biri döndürülür:
- Başarılı Oldu
- Başarısız oldu
- İptal edildi
Diğer tüm değerler işlemin hala çalıştığını gösterir. Kaynak sağlayıcısı, durumunu gösteren özelleştirilmiş bir değer döndürebilir. Örneğin, istek alındığında ve çalıştırıldığında Kabul Edildi iletisini alırsınız.
Örnek istekler ve yanıtlar
Sanal makineyi başlatma (Azure-AsyncOperation ile 202)
Bu örnekte sanal makineler için başlatma işleminin durumunun nasıl belirleneceği gösterilmektedir. İlk istek aşağıdaki biçimdedir:
POST
https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Compute/virtualMachines/{vm-name}/start?api-version=2019-12-01
202 durum kodunu döndürür. Üst bilgi değerleri arasında şunları görürsünüz:
Azure-AsyncOperation : https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Compute/locations/{region}/operations/{operation-id}?api-version=2019-12-01
Zaman uyumsuz işlemin durumunu denetlemek için bu URL'ye başka bir istek gönderin.
GET
https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Compute/locations/{region}/operations/{operation-id}?api-version=2019-12-01
Yanıt gövdesi işlemin durumunu içerir:
{
"startTime": "2017-01-06T18:58:24.7596323+00:00",
"status": "InProgress",
"name": "9a062a88-e463-4697-bef2-fe039df73a02"
}
Kaynakları dağıtma (Azure-AsyncOperation ile 201)
Bu örnekte, kaynakları Azure'a dağıtmak için dağıtım işleminin durumunun nasıl belirleneceği gösterilmektedir. İlk istek aşağıdaki biçimdedir:
PUT
https://management.azure.com/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/microsoft.resources/deployments/{deployment-name}?api-version=2020-06-01
Durum kodu 201'i döndürür. Yanıtın gövdesi şunları içerir:
"provisioningState":"Accepted",
Üst bilgi değerleri arasında şunları görürsünüz:
Azure-AsyncOperation: https://management.azure.com/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/Microsoft.Resources/deployments/{deployment-name}/operationStatuses/{operation-id}?api-version=2020-06-01
Zaman uyumsuz işlemin durumunu denetlemek için bu URL'ye başka bir istek gönderir.
GET
https://management.azure.com/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/Microsoft.Resources/deployments/{deployment-name}/operationStatuses/{operation-id}?api-version=2020-06-01
Yanıt gövdesi işlemin durumunu içerir:
{
"status": "Running"
}
Dağıtım tamamlandığında yanıt şunları içerir:
{
"status": "Succeeded"
}
Depolama hesabı oluşturma (Konum ve Yeniden Deneme Sonrası ile 202)
Bu örnekte, depolama hesapları için oluşturma işleminin durumunun nasıl belirleneceği gösterilmektedir. İlk istek aşağıdaki biçimdedir:
PUT
https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}?api-version=2019-06-01
İstek gövdesi, depolama hesabının özelliklerini içerir:
{
"location": "South Central US",
"properties": {},
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage"
}
202 durum kodunu döndürür. Üst bilgi değerleri arasında aşağıdaki iki değeri görürsünüz:
Location: https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Storage/operations/{operation-id}?monitor=true&api-version=2019-06-01
Retry-After: 17
Yeniden Dene-Sonra bölümünde belirtilen saniye sayısını bekledikten sonra, bu URL'ye başka bir istek göndererek zaman uyumsuz işlemin durumunu denetleyin.
GET
https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Storage/operations/{operation-id}?monitor=true&api-version=2019-06-01
İstek hala çalışıyorsa 202 durum kodunu alırsınız. İstek tamamlandıysa, 200 durum kodunu alırsınız. Yanıtın gövdesi, oluşturulan depolama hesabının özelliklerini içerir.
Sonraki adımlar
- Her REST işlemiyle ilgili belgeler için REST API belgelerine bakın.
- Resource Manager REST API aracılığıyla şablonları dağıtma hakkında bilgi için bkz . Resource Manager şablonları ve Resource Manager REST API'siyle kaynak dağıtma.