Freigeben über


Behebung von Fehlern bei nicht gefundener Ressource

In diesem Artikel wird der Fehler beschrieben, der angezeigt wird, wenn eine Ressource während eines Vorgangs nicht gefunden werden kann. Normalerweise wird dieser Fehler beim Bereitstellen von Ressourcen mit einer Bicep-Datei oder einer Azure Resource Manager-Vorlage (ARM-Vorlage) angezeigt. Dieser Fehler wird auch angezeigt, wenn Verwaltungsaufgaben ausgeführt werden, und Azure Resource Manager kann die erforderliche Ressource nicht finden. Wenn Sie beispielsweise versuchen, einer Ressource, die nicht vorhanden ist, Tags hinzuzufügen, wird dieser Fehler angezeigt.

Symptome

Es gibt zwei Fehlercodes, die angeben, dass die Ressource nicht gefunden werden kann. Der NotFound Fehler gibt ein Ergebnis zurück, das ähnlich ist:

Code=NotFound;
Message=Cannot find ServerFarm with name exampleplan.

Der ResourceNotFound Fehler gibt ein Ergebnis zurück, das ähnlich ist:

Code=ResourceNotFound;
Message=The Resource 'Microsoft.Storage/storageAccounts/{storage name}' under resource
group {resource group name} was not found.

Ursache

Der Ressourcen-Manager muss die Eigenschaften für eine Ressource abrufen, aber die Ressource in Ihrem Abonnement nicht finden.

Lösung 1: Überprüfen von Ressourceneigenschaften

Wenn dieser Fehler beim Ausführen einer Verwaltungsaufgabe auftritt, überprüfen Sie die Werte, die Sie für die Ressource angegeben haben. Die drei zu überprüfenden Werte sind:

  • Ressourcenname
  • Ressourcengruppenname
  • Abonnement

Wenn Sie PowerShell oder Azure CLI verwenden, überprüfen Sie, ob Sie Befehle im Abonnement ausführen, das die Ressource enthält. Sie können das Abonnement mit set-AzContext oder az account set ändern. Viele Befehle bieten auch einen Abonnementparameter, mit dem Sie ein anderes Abonnement als den aktuellen Kontext angeben können.

Wenn Sie die Eigenschaften nicht überprüfen können, melden Sie sich beim Microsoft Azure-Portal an. Suchen Sie die Ressource, die Sie verwenden möchten, und untersuchen Sie den Ressourcennamen, die Ressourcengruppe und das Abonnement.

Lösung 2: Festlegen von Abhängigkeiten

Wenn beim Bereitstellen einer Vorlage diese Fehlermeldung angezeigt wird, müssen Sie möglicherweise eine Abhängigkeit hinzufügen. Der Ressourcen-Manager optimiert Bereitstellungen, indem Ressourcen nach Möglichkeit parallel erstellt werden.

Wenn Sie beispielsweise eine Web-App bereitstellen, muss der App Service-Plan vorhanden sein. Wenn Sie nicht angegeben haben, dass die Web-App vom App Service-Plan abhängt, erstellt der Ressourcen-Manager beide Ressourcen gleichzeitig. Die Web-App schlägt fehl, weil die App Service-Plan-Ressource nicht gefunden werden kann, da sie noch nicht vorhanden ist. Sie verhindern diesen Fehler, indem Sie eine Abhängigkeit in der Web-App festlegen.

Verwenden Sie eine implizite Abhängigkeit anstelle der resourceId-Funktion . Die Abhängigkeit wird mithilfe des symbolischen Namens und der ID-Eigenschaft einer Ressource erstellt.

Beispielsweise verwendet die serverFarmId-Eigenschaft der Web-App, um eine Abhängigkeit vom App Service-Plan zu erstellen, servicePlan.id.

resource webApp 'Microsoft.Web/sites@2022-03-01' = {
  properties: {
    serverFarmId: servicePlan.id
  }
}

resource servicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
  name: hostingPlanName
  ...

Bei den meisten Bereitstellungen ist es nicht erforderlich, dependsOn zu verwenden, um eine explizite Abhängigkeit zu erstellen.

Vermeiden Sie das Festlegen von Abhängigkeiten, die nicht benötigt werden. Unnötige Abhängigkeiten verlängern die Dauer der Bereitstellung, da Ressourcen nicht parallel bereitgestellt werden. Außerdem können Sie Zirkelabhängigkeiten erstellen, die die Bereitstellung blockieren.

Bereitstellungsreihenfolge

Wenn Abhängigkeitsprobleme angezeigt werden, müssen Sie Einblicke in die Reihenfolge der Ressourcenbereitstellung erhalten. Sie können das Portal verwenden, um die Reihenfolge der Bereitstellungsvorgänge anzuzeigen:

  1. Melden Sie sich beim Portal an.

  2. Wählen Sie im Überblick der Ressourcengruppe den Link für den Bereitstellungsverlauf aus.

    Screenshot des Azure-Portals, in dem der Link zum Bereitstellungsverlauf einer Ressourcengruppe im Abschnitt

  3. Wählen Sie als Bereitstellungsnamen, den Sie überprüfen möchten, Verknüpfte Ereignisse aus.

    Screenshot des Azure-Portals mit einem Bereitstellungsnamen mit hervorgehobenem Link

  4. Untersuchen Sie die Abfolge von Ereignissen für jede Ressource. Achten Sie auf den Status der einzelnen Vorgänge und deren Zeitstempel. Die folgende Abbildung zeigt beispielsweise drei Speicherkonten, die parallel bereitgestellt wurden. Beachten Sie, dass die drei Bereitstellungen des Speicherkontos gleichzeitig gestartet wurden.

    Screenshot des Azure-Portalaktivitätsprotokolls mit drei parallel bereitgestellten Speicherkonten mit ihren Zeitstempeln und Status.

    Die nächste Abbildung zeigt drei Speicherkonten, die nicht parallel bereitgestellt werden. Das zweite Speicherkonto hängt vom ersten Speicherkonto ab, und das dritte Speicherkonto hängt vom zweiten Speicherkonto ab. Das erste Speicherkonto heißt "Gestartet", " Akzeptiert" und " Erfolgreich" , bevor das nächste Konto gestartet wird.

    Screenshot des Azure-Portalaktivitätsprotokolls mit drei Speicherkonten, die in sequenzieller Reihenfolge bereitgestellt werden, mit ihren Zeitstempeln und Status.

Lösung 3: Abrufen einer externen Ressource

Bicep verwendet den symbolischen Namen, um eine implizite Abhängigkeit von einer anderen Ressource zu erstellen. Das vorhandene Schlüsselwort verweist auf eine bereitgestellte Ressource. Wenn sich eine vorhandene Ressource in einer anderen Ressourcengruppe befindet als die Ressource, die Sie bereitstellen möchten, schließen Sie den Bereich ein, und verwenden Sie die ResourceGroup-Funktion .

In diesem Beispiel wird eine Web-App bereitgestellt, die einen vorhandenen App Service-Plan aus einer anderen Ressourcengruppe verwendet.

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
  }
}

Lösung 4: Abrufen der verwalteten Identität von der Ressource

Wenn Sie eine Ressource mit einer verwalteten Identität bereitstellen, müssen Sie warten, bis diese Ressource bereitgestellt wird, bevor Sie Werte für die verwaltete Identität abrufen. Verwenden Sie eine implizite Abhängigkeit für die Ressource, auf die die Identität angewendet wird. Mit diesem Ansatz wird sichergestellt, dass die Ressource und die verwaltete Identität bereitgestellt werden, bevor der Ressourcen-Manager die Abhängigkeit verwendet.

Sie können die Prinzipal-ID und Mandanten-ID für eine verwaltete Identität abrufen, die auf einen virtuellen Computer angewandt wird. Wenn beispielsweise eine Ressource eines virtuellen Computers einen symbolischen Namen vmhat, verwenden Sie die folgende Syntax:

vm.identity.principalId

vm.identity.tenantId

Lösung 5: Überprüfen von Funktionen

Sie können den symbolischen Namen einer Ressource verwenden, um Werte aus einer Ressource abzurufen. Sie können mithilfe eines symbolischen Namens auf ein Speicherkonto in derselben Ressourcengruppe oder einer anderen Ressourcengruppe verweisen. Verwenden Sie das vorhandene Schlüsselwort, um einen Wert aus einer bereitgestellten Ressource abzurufen. Wenn sich eine Ressource in einer anderen Ressourcengruppe befindet, verwenden Sie scope die ResourceGroup-Funktion . In den meisten Fällen ist die Referenzfunktion nicht erforderlich.

Im folgenden Beispiel wird auf ein vorhandenes Speicherkonto in einer anderen Ressourcengruppe verwiesen.

resource stgAcct 'Microsoft.Storage/storageAccounts@2022-05-01' existing = {
  name: stgname
  scope: resourceGroup(rgname)
}

Lösung 6: Nach dem Löschen der Ressource

Wenn Sie eine Ressource löschen, gibt es möglicherweise einen kurzen Zeitraum, wenn die Ressource im Portal angezeigt wird, aber nicht verfügbar ist. Wenn Sie die Ressource auswählen, wird eine Fehlermeldung angezeigt, dass die Ressource nicht gefunden wird.

Screenshot des Azure-Portals mit einer gelöschten Ressource mit einer Fehlermeldung

Aktualisieren Sie das Portal, und die gelöschte Ressource sollte aus der Liste der verfügbaren Ressourcen entfernt werden. Wenn eine gelöschte Ressource weiterhin für mehr als ein paar Minuten als verfügbar angezeigt wird, wenden Sie sich an den Support.