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 dependsOnexplicit 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:

  1. Jelentkezzen be a portálra.

  2. Az erőforráscsoport Áttekintés lapján válassza ki az üzembe helyezési előzmények hivatkozását.

    Képernyőkép Azure Portal az Erőforráscsoport üzembe helyezési előzményei hivatkozásának kiemeléséről az Áttekintés szakaszban.

  3. A megtekinteni kívánt üzemelő példány neveként válassza a Kapcsolódó események lehetőséget.

    Képernyőkép Azure Portal az üzembe helyezési névről, amelyen a Kapcsolódó események hivatkozás van kiemelve az üzembe helyezési előzmények között.

  4. 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.

    Képernyőkép Azure Portal tevékenységnaplóról, amely három párhuzamosan üzembe helyezett tárfiókot jelenít meg időbélyegekkel és állapotokkal.

    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.

    Képernyőkép Azure Portal tevékenységnaplóról, amely három egymás utáni sorrendben üzembe helyezett tárfiókot jelenít meg időbélyegekkel és állapotokkal.

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 vmvan, 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ó.

Képernyőkép Azure Portal az erőforrás Áttekintés szakaszában 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.