Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Vorlagenfehler für Bicep-Dateien und Azure Resource Manager-Vorlagen (ARM-Vorlagen) behoben werden. Der Fehler tritt aus mehreren Gründen auf, z. B. syntaxfehler, ungültiger Parameterwert oder Zirkelabhängigkeit.
Symptom
Wenn eine Vorlage bereitgestellt wird, erhalten Sie eine Fehlermeldung, die Folgendes angibt:
Code=InvalidTemplate
Message=<varies>
Die Fehlermeldung hängt vom Typ des Fehlers ab.
Ursache
Dieser Fehler kann aus verschiedenen Arten von Fehlern resultieren. Sie beziehen sich in der Regel auf einen Syntax- oder Strukturfehler in der Vorlage.
Lösung 1: Syntaxfehler
Wenn Sie eine Fehlermeldung erhalten, die angibt, dass die Überprüfung der Vorlage fehlgeschlagen ist, liegt möglicherweise ein Syntaxproblem in Der Vorlage vor.
Code=InvalidTemplate
Message=Deployment template validation failed
Syntaxfehler können auftreten, da Vorlagenausdrücke viele Elemente aufweisen. Beispielsweise umfasst die Namenszuweisung für ein Speicherkonto Paare von einfachen oder doppelten Anführungszeichen, geschweiften Klammern, eckigen Klammern und runden Klammern. Ausdrücke enthalten auch Funktionen und Zeichen wie Dollarzeichen, Kommas und Punkte.
Wenn Sie diesen Fehlertyp erhalten, überprüfen Sie die Syntax des Ausdrucks. Um Vorlagenfehler zu identifizieren, können Sie Visual Studio Code mit der neuesten Erweiterung Bicep oder den Azure Resource Manager Tools verwenden.
Lösung 2: Falsche Segmentlängen
Ein weiterer ungültiger Vorlagenfehler tritt auf, wenn sich der Ressourcenname nicht im richtigen Format befindet. Um diesen Fehler zu beheben, siehe Beheben von Fehlern bei Namens- und Typkonflikten.
Lösung 3: Der Parameter ist ungültig.
Sie können die zulässigen Werte eines Parameters in einer Vorlage angeben. Wenn Sie während der Bereitstellung einen Wert angeben, der kein zulässiger Wert ist, erhalten Sie eine Meldung ähnlich dem folgenden Fehler:
Code=InvalidTemplate;
Message=Deployment template validation failed: 'The provided value {parameter value}
for the template parameter {parameter name} is not valid. The parameter value is not
part of the allowed values
Überprüfen Sie die Vorlage auf die zulässigen Werte des Parameters, und verwenden Sie während der Bereitstellung einen zulässigen Wert. Weitere Informationen finden Sie unter zulässigen Werten für Bicep und ARM-Vorlagen.
Lösung 4: Zu viele Zielressourcengruppen
Dieser Fehler wird in früheren Bereitstellungen möglicherweise angezeigt, da Sie in einer einzelnen Bereitstellung auf fünf Zielressourcengruppen beschränkt waren. Im Mai 2020 wurde dieser Grenzwert auf 800 Ressourcengruppen erhöht. Weitere Informationen finden Sie unter Bereitstellen für mehrere Ressourcengruppen in Bicep oder ARM-Vorlagen.
Lösung 5: Zirkelabhängigkeit erkannt
Sie erhalten diesen Fehler, wenn Ressourcen auf eine Weise voneinander abhängen, die verhindert, dass die Bereitstellung gestartet wird. Eine Kombination aus Abhängigkeiten führt dazu, dass zwei oder mehr Ressourcen auf andere Ressourcen warten, die ebenfalls warten. Zum Beispiel hängt resource1
von resource3
ab, resource2
hängt von resource1
ab, und resource3
hängt von resource2
ab. Sie können dieses Problem in der Regel lösen, indem Sie unnötige Abhängigkeiten entfernen.
Bicep erstellt eine implizite Abhängigkeit, wenn eine Ressource den symbolischen Namen einer anderen Ressource verwendet. Eine explizite Abhängigkeit mit dependsOn
ist üblicherweise nicht erforderlich. Weitere Informationen finden Sie unter Bicep-Abhängigkeiten.
So lösen Sie eine Zirkelabhängigkeit:
- Suchen Sie in Ihrer Vorlage die ressource, die in der Zirkelabhängigkeit identifiziert wurde.
- Untersuchen Sie die
dependsOn
-Eigenschaft dieser Ressource und die Verwendung derreference
- oderresourceId
-Funktionen, um festzustellen, von welchen Ressourcen sie abhängt. - Überprüfen Sie diese Ressourcen, um festzustellen, von welchen Ressourcen sie abhängen. Folgen Sie den Abhängigkeiten, bis Sie eine Ressource bemerken, die von der ursprünglichen Ressource abhängt.
- Überprüfen Sie für die Ressourcen, die an der Zirkelabhängigkeit beteiligt sind, sorgfältig alle Verwendungen der
dependsOn
Eigenschaft, um Abhängigkeiten zu identifizieren, die nicht benötigt werden. Um probleme mit der Bereitstellung zu beheben, entfernen Sie die Zirkelabhängigkeiten. Anstatt den Code zu löschen, können Sie Kommentare verwenden, damit der Code während der nächsten Bereitstellung nicht ausgeführt wird. Sie können einzeilige Kommentare (//
) oder mehrzeilige Kommentare (/* ... */
) in ARM-Vorlagen oder Bicep-Dateien verwenden. - Stellen Sie die Vorlage erneut bereit.
Das Entfernen von Werten aus der dependsOn
Eigenschaft kann beim Bereitstellen der Vorlage zu Fehlern führen. Wenn ein Fehler auftritt, fügen Sie die Abhängigkeit wieder zur Vorlage hinzu. Wenn Sie Kommentare verwendet haben, um Code in Ihrer Vorlage zu umgehen, können Sie die Kommentare entfernen, um den Code wiederherzustellen.
Wenn dieser Ansatz die Zirkelabhängigkeit nicht löst, sollten Sie einen Teil Ihrer Bereitstellungslogik in untergeordnete Ressourcen verschieben (z. B. Erweiterungen oder Konfigurationseinstellungen). Konfigurieren Sie diese untergeordneten Ressourcen so, dass sie nach den an der Ringabhängigkeit beteiligten Ressourcen bereitgestellt werden. Nehmen wir beispielsweise an, Sie stellen zwei virtuelle Computer bereit, müssen aber Eigenschaften festlegen, die auf den jeweils anderen verweisen. Sie können diese in der folgenden Reihenfolge bereitstellen:
- VM1
- VM2
- Die Erweiterung auf VM1 hängt von VM1 und VM2 ab. Die Erweiterung legt Werte auf VM1 fest, die sie von VM2 abruft.
- Die Erweiterung auf VM2 hängt von VM1 und VM2 ab. Die Erweiterung legt Werte auf VM2 fest, die sie von VM1 abruft.
Der gleiche Ansatz funktioniert für App Service-Apps. Erwägen Sie das Verschieben von Konfigurationswerten in eine untergeordnete Ressource der App-Ressource. Sie können zwei Web-Apps in der folgenden Reihenfolge bereitstellen:
- webapp1
- Webapp2
- Die Konfiguration für Webapp1 hängt von webapp1 und webapp2 ab. Sie enthält App-Einstellungen mit Werten aus webapp2.
- Die Konfiguration für Webapp2 hängt von webapp1 und webapp2 ab. Sie enthält App-Einstellungen mit Werten aus webapp1.
Lösung 6: Überprüfen der Syntax für exportierte Vorlagen
Nachdem Sie Ressourcen in Azure bereitgestellt haben, können Sie die ARM-Vorlagen-JSON exportieren und für andere Bereitstellungen ändern. Sie sollten die exportierte Vorlage auf die richtige Syntax überprüfen, bevor Sie sie zum Bereitstellen von Ressourcen verwenden.
Sie können eine Vorlage aus dem Portal, der Azure CLI oder Azure PowerShell exportieren. Es gibt Empfehlungen, ob Sie die Vorlage aus der Ressourcen- oder Ressourcengruppe oder aus dem Bereitstellungsverlauf exportiert haben.
Nachdem Sie eine ARM-Vorlage exportiert haben, können Sie die JSON-Vorlage in Bicep dekompilieren. Verwenden Sie dann bewährte Methoden und den Linter, um Ihren Code zu überprüfen.
Weitere Informationen finden Sie in den folgenden Artikeln: