A nem található erőforrás hibáinak elhárítása
Ez a cikk azt a hibát ismerteti, amely akkor jelenik meg, ha egy erőforrás nem található egy művelet során. Ez a hiba általában akkor jelenik meg, ha bicep-fájllal vagy Azure Resource Manager-sablonnal (ARM-sablonnal) helyez üzembe erőforrásokat. Ez a hiba akkor is megjelenik, ha felügyeleti feladatokat végez, és az Azure Resource Manager nem találja a szükséges erőforrást. Ha például nem létező erőforráshoz próbál címkéket hozzáadni, ez a hibaüzenet jelenik meg.
Hibajelenségek
Két hibakód jelzi, hogy az erőforrás nem található. A NotFound
hiba a következőhöz hasonló eredményt ad vissza:
Code=NotFound;
Message=Cannot find ServerFarm with name exampleplan.
A ResourceNotFound
hiba a következőhöz hasonló eredményt ad vissza:
Code=ResourceNotFound;
Message=The Resource 'Microsoft.Storage/storageAccounts/{storage name}' under resource
group {resource group name} was not found.
Ok
Resource Manager le kell kérnie egy erőforrás tulajdonságait, de nem találja az erőforrást az előfizetésében.
1. megoldás: Erőforrás tulajdonságainak ellenőrzése
Ha egy felügyeleti feladat végrehajtása közben kapja ezt a hibát, ellenőrizze, milyen értékeket adott meg az erőforráshoz. A három ellenőrizendő érték a következő:
- Erőforrás neve
- Erőforráscsoport neve
- Előfizetés
Ha PowerShellt vagy Azure CLI-t használ, ellenőrizze, hogy az erőforrást tartalmazó előfizetésben futtat-e parancsokat. Az előfizetést a Set-AzContext vagy az az account set paranccsal módosíthatja. Számos parancsnál megadható egy előfizetési paraméter, amellyel az aktuális környezettől eltérő előfizetést is megadhat.
Ha nem tudja ellenőrizni a tulajdonságokat, jelentkezzen be a Microsoft Azure Portal. Keresse meg a használni kívánt erőforrást, és vizsgálja meg az erőforrás nevét, az erőforráscsoportot és az előfizetést.
2. megoldás: Függőségek beállítása
Ha ez a hiba egy sablon üzembe helyezésekor jelenik meg, előfordulhat, hogy hozzá kell adnia egy függőséget. Resource Manager optimalizálja az üzemelő példányokat az erőforrások párhuzamos létrehozásával, ha lehetséges.
Webalkalmazás üzembe helyezésekor például léteznie kell a App Service csomagnak. Ha még nem adta meg, hogy a webalkalmazás a App Service-csomagtól függ, Resource Manager egyidejűleg mindkét erőforrást létrehozza. A webalkalmazás hibaüzenettel meghiúsul, amely szerint a App Service-csomag erőforrása nem található, mert még nem létezik. Ezt a hibát úgy előzheti meg, hogy beállít egy függőséget a webalkalmazásban.
Használjon implicit függőséget a resourceId függvény helyett. A függőség egy erőforrás szimbolikus nevének és AZONOSÍTÓ tulajdonságának használatával jön létre.
A webalkalmazás tulajdonsága serverFarmId
például a App Service csomag függőségének létrehozására használjaservicePlan.id
.
resource webApp 'Microsoft.Web/sites@2022-03-01' = {
properties: {
serverFarmId: servicePlan.id
}
}
resource servicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
name: hostingPlanName
...
A legtöbb üzembe helyezéshez nem szükséges dependsOn
explicit függőséget létrehozni.
Kerülje a nem szükséges függőségek beállítását. A szükségtelen függőségek meghosszabbítják az üzembe helyezés időtartamát, mivel az erőforrások nincsenek párhuzamosan üzembe helyezve. Emellett létrehozhat körkörös függőségeket is, amelyek blokkolják az üzembe helyezést.
Üzembe helyezési sorrend
Ha függőségi problémákat tapasztal, betekintést kell nyernie az erőforrások üzembe helyezésének sorrendjébe. A portálon megtekintheti az üzembehelyezési műveletek sorrendjét:
Jelentkezzen be a portálra.
Az erőforráscsoport Áttekintés lapján válassza ki az üzembe helyezési előzmények hivatkozását.
A megtekinteni kívánt üzemelő példány neveként válassza a Kapcsolódó események lehetőséget.
Vizsgálja meg az egyes erőforrások eseménysorozatát. Figyeljen az egyes műveletek állapotára és az időbélyegre. Az alábbi képen például három, párhuzamosan üzembe helyezett tárfiók látható. Figyelje meg, hogy a három tárfiók üzembe helyezése egyszerre indult el.
A következő képen három tárfiók látható, amelyek nincsenek párhuzamosan üzembe helyezve. A második tárfiók az első tárfióktól, a harmadik pedig a második tárfióktól függ. Az első tárfiók a következő kezdés előtt Elindítva, Elfogadva és Sikeres címkével van ellátva.
3. megoldás: Külső erőforrás lekérése
A Bicep a szimbolikus névvel implicit függőséget hoz létre egy másik erőforráshoz. A meglévő kulcsszó egy üzembe helyezett erőforrásra hivatkozik. Ha egy meglévő erőforrás más erőforráscsoportban található, mint az üzembe helyezni kívánt erőforrás, adja meg a hatókört , és használja a resourceGroup függvényt.
Ebben a példában egy webalkalmazást helyezünk üzembe, amely egy másik erőforráscsoportból származó meglévő App Service csomagot használ.
resource servicePlan 'Microsoft.Web/serverfarms@2022-03-01' existing = {
name: hostingPlanName
scope: resourceGroup(rgname)
}
resource webApp 'Microsoft.Web/sites@2022-03-01' = {
name: siteName
properties: {
serverFarmId: servicePlan.id
}
}
4. megoldás: Felügyelt identitás lekérése erőforrásból
Ha felügyelt identitással helyez üzembe egy erőforrást, meg kell várnia az erőforrás üzembe helyezését, mielőtt értékeket kér le a felügyelt identitáson. Használjon implicit függőséget ahhoz az erőforráshoz, amelyre az identitás vonatkozik. Ez a megközelítés biztosítja, hogy az erőforrás és a felügyelt identitás üzembe legyen helyezve, mielőtt Resource Manager használni a függőséget.
Lekérheti egy virtuális gépre alkalmazott felügyelt identitás egyszerű azonosítóját és bérlőazonosítóját. Ha például egy virtuálisgép-erőforrásnak szimbolikus neve vm
van, használja a következő szintaxist:
vm.identity.principalId
vm.identity.tenantId
5. megoldás: Függvények ellenőrzése
Az erőforrások szimbolikus nevével értékeket kérhet le egy erőforrásból. Szimbolikus névvel hivatkozhat egy tárfiókra ugyanabban az erőforráscsoportban vagy egy másik erőforráscsoportban. Ha egy üzembe helyezett erőforrásból szeretne értéket lekérni, használja a meglévő kulcsszót. Ha egy erőforrás egy másik erőforráscsoportban található, használja scope
a resourceGroup függvényt. A legtöbb esetben nincs szükség a referenciafüggvényre.
Az alábbi példa egy másik erőforráscsoportban lévő meglévő tárfiókra hivatkozik.
resource stgAcct 'Microsoft.Storage/storageAccounts@2022-05-01' existing = {
name: stgname
scope: resourceGroup(rgname)
}
6. megoldás: Erőforrás törlése után
Ha töröl egy erőforrást, előfordulhat, hogy az erőforrás rövid ideig jelenik meg a portálon, de nem érhető el. Ha kiválasztja az erőforrást, hibaüzenet jelenik meg, amely szerint az erőforrás nem található.
Frissítse a portált, és a törölt erőforrást el kell távolítani az elérhető erőforrások listájából. Ha egy törölt erőforrás továbbra is elérhetőként jelenik meg néhány percnél tovább, forduljon az ügyfélszolgálathoz.