Aszinkron Azure-műveletek nyomon követése
Egyes Azure REST-műveletek aszinkron módon futnak, mert a művelet nem hajtható végre gyorsan. Ez a cikk azt ismerteti, hogyan követheti nyomon az aszinkron műveletek állapotát a válaszban visszaadott értékeken keresztül.
Az aszinkron műveletek állapotkódjai
Az aszinkron művelet kezdetben egy HTTP-állapotkódot ad vissza:
- 201 (Létrehozva)
- 202 (Elfogadva)
Ez az állapotkód azonban nem feltétlenül jelenti azt, hogy a művelet aszinkron. Az aszinkron művelet olyan értéket provisioningState
is visszaad, amely azt jelzi, hogy a művelet nem fejeződött be. Az érték műveletenként változhat, de nem tartalmazza a Sikeres, a Sikertelen vagy a Mégse értéket. Ez a három érték azt jelzi, hogy a művelet befejeződött. Ha a rendszer nem ad vissza provisioningState
értéket, a művelet befejeződött és sikeres volt.
Ha a művelet sikeresen befejeződött, a következőt adja vissza:
- 200 (OK)
- 204 (Nincs tartalom)
Tekintse meg a REST API dokumentációját a futtatandó műveletre adott válaszok megtekintéséhez.
A 201-ben vagy 202-ben kapott válaszkód lekérése után készen áll a művelet állapotának figyelésére.
Az állapot monitorozásához tartozó URL-cím
Az aszinkron művelet állapotának monitorozása két különböző módon lehetséges. A helyes megközelítést az eredeti kérésből visszaadott fejlécértékek vizsgálatával határozhatja meg. Először keresse meg a következőt:
Azure-AsyncOperation
- A művelet folyamatos állapotának ellenőrzésére szolgáló URL-cím. Ha a művelet ezt az értéket adja vissza, használja a művelet állapotának nyomon követéséhez.Retry-After
- Az aszinkron művelet állapotának ellenőrzése előtt várandó másodpercek száma.
Ha Azure-AsyncOperation
nem a fejlécértékek egyike, keresse meg a következőt:
Location
- A művelet befejezésének időpontjának meghatározására szolgáló URL-cím. Ezt az értéket csak akkor használja, haAzure-AsyncOperation
nincs visszaadva.Retry-After
- Az aszinkron művelet állapotának ellenőrzése előtt várandó másodpercek száma.
Ha nem adja vissza a Retry-after
fejlécet, implementálja a saját újrapróbálkozás logikáját.
Megjegyzés:
A REST-ügyfélnek el kell fogadnia a legalább 4 KB-os URL-méretet és Location
a Azure-AsyncOperation
.
Engedély az aszinkron állapot nyomon követéséhez
Az aszinkron művelet állapotának nyomon követéséhez elegendő engedélyre van szüksége az erőforráscsoport szintjén. Ha csak az erőforrás szintjén rendelkezik engedéllyel, elindíthatja a műveletet, de nem követheti nyomon az állapotát. Az erőforráscsoport szintjén engedélyre van szükség, mert a nyomkövetési állapot URL-címe nem tartozik az erőforrás hatókörébe.
Egy virtuális gép elindításához például a virtuális gépet tartalmazó erőforráscsoport virtuálisgép-közreműködői szerepkörére van szükség. Az indítási kérelem nyomon követésének URL-címe nem tartalmazza a virtuális gépet az elérési útjában.
GET
https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Compute/locations/{region}/operations/{operation-id}?api-version=2019-12-01
Azure-AsyncOperation kérés és válasz
Ha a Azure-AsyncOperation
fejlécértékből származó URL-címmel rendelkezik, küldjön egy GET kérést erre az URL-címre. Az állapot ellenőrzéséhez használja a forrás értékének Retry-After
ütemezését. Egy válaszobjektumot kap, amely a művelet állapotát jelzi. A művelet állapotának URL-címmel való ellenőrzésekor a rendszer egy másik választ ad Location
vissza. A hely URL-címéből kapott válaszról további információt a Tárfiók létrehozása (202 hely és újrapróbálkozás után) című témakörben talál.
A választulajdonságok eltérőek lehetnek, de mindig tartalmazzák az aszinkron művelet állapotát.
{
"status": "{status-value}"
}
Az alábbi példa a műveletből visszaadható egyéb értékeket mutatja be:
{
"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}"
}
}
A hibaobjektum akkor jelenik meg, ha az állapot sikertelen vagy megszakítva. Az összes többi érték megadása nem kötelező. A kapott válasz eltérhet a példától.
provisioningState-értékek
Az erőforrásokat létrehozó, frissítő vagy törlő műveletek (PUT, PATCH, DELETE) általában egy provisioningState
értéket adnak vissza. Ha egy művelet befejeződött, a rendszer a következő három érték egyikét adja vissza:
- Sikeres
- Failed
- Canceled
Minden más érték azt jelzi, hogy a művelet még fut. Az erőforrás-szolgáltató olyan testreszabott értéket adhat vissza, amely az állapotát jelzi. A kérés fogadása és futtatásakor például elfogadva lesz.
Példakérések és válaszok
Virtuális gép indítása (202 az Azure-AsyncOperation használatával)
Ez a példa bemutatja, hogyan határozható meg a virtuális gépek indítási műveletének állapota. A kezdeti kérés formátuma a következő:
POST
https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Compute/virtualMachines/{vm-name}/start?api-version=2019-12-01
A 202-s állapotkódot adja vissza. A fejlécértékek között a következő látható:
Azure-AsyncOperation : https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Compute/locations/{region}/operations/{operation-id}?api-version=2019-12-01
Az aszinkron művelet állapotának ellenőrzéséhez küldjön egy másik kérést az adott URL-címre.
GET
https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Compute/locations/{region}/operations/{operation-id}?api-version=2019-12-01
A válasz törzse a művelet állapotát tartalmazza:
{
"startTime": "2017-01-06T18:58:24.7596323+00:00",
"status": "InProgress",
"name": "9a062a88-e463-4697-bef2-fe039df73a02"
}
Erőforrások üzembe helyezése (201 az Azure-AsyncOperation használatával)
Ez a példa bemutatja, hogyan határozható meg az erőforrások Azure-ban történő üzembe helyezési műveletének állapota. A kezdeti kérés formátuma a következő:
PUT
https://management.azure.com/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/microsoft.resources/deployments/{deployment-name}?api-version=2020-06-01
A 201-ben visszaadott állapotkódot adja vissza. A válasz törzse a következőket tartalmazza:
"provisioningState":"Accepted",
A fejlécértékek között a következő látható:
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
Az aszinkron művelet állapotának ellenőrzéséhez küldjön egy másik kérést az ADOTT URL-címre.
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
A válasz törzse a művelet állapotát tartalmazza:
{
"status": "Running"
}
Ha az üzembe helyezés befejeződött, a válasz a következőket tartalmazza:
{
"status": "Succeeded"
}
Tárfiók létrehozása (202 hely és újrapróbálkozás után)
Ez a példa bemutatja, hogyan határozhatja meg a tárfiókok létrehozási műveletének állapotát. A kezdeti kérés formátuma a következő:
PUT
https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}?api-version=2019-06-01
A kérelem törzse pedig a tárfiók tulajdonságait tartalmazza:
{
"location": "South Central US",
"properties": {},
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage"
}
A 202-s állapotkódot adja vissza. A fejlécértékek között a következő két érték látható:
Location: https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Storage/operations/{operation-id}?monitor=true&api-version=2019-06-01
Retry-After: 17
Az Újrapróbálkozási idő beállításban megadott másodpercek száma után ellenőrizze az aszinkron művelet állapotát, ha egy másik kérést küld az adott URL-címre.
GET
https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Storage/operations/{operation-id}?monitor=true&api-version=2019-06-01
Ha a kérés továbbra is fut, egy 202-s állapotkódot kap. Ha a kérés befejeződött, a rendszer egy 200-os állapotkódot kap. A válasz törzse tartalmazza a létrehozott tárfiók tulajdonságait.
További lépések
- Az egyes REST-műveletek dokumentációját a REST API dokumentációjában találja.
- A sablonok Resource Manager REST API-val történő üzembe helyezésével kapcsolatos információkért lásd : Erőforrások üzembe helyezése Resource Manager-sablonokkal és Resource Manager REST API-val.