Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób rozwiązywania nieprawidłowych błędów szablonów dla plików Bicep i szablonów usługi Azure Resource Manager (szablonów usługi ARM). Błąd występuje z kilku powodów, takich jak błąd składni, nieprawidłowa wartość parametru lub zależność cykliczna.
Objaw
Po wdrożeniu szablonu zostanie wyświetlony błąd wskazujący:
Code=InvalidTemplate
Message=<varies>
Komunikat o błędzie zależy od typu błędu.
Przyczyna
Ten błąd może wynikać z kilku różnych typów błędów. Zwykle obejmują one składnię lub błąd strukturalny w szablonie.
Rozwiązanie 1. Błąd składniowy
Jeśli zostanie wyświetlony komunikat o błędzie wskazujący, że weryfikacja szablonu nie powiodła się, może wystąpić problem ze składnią w szablonie.
Code=InvalidTemplate
Message=Deployment template validation failed
Błędy składni mogą wystąpić, ponieważ wyrażenia szablonu mają wiele elementów. Na przykład przypisanie nazwy do konta pamięci masowej obejmuje pary pojedynczych lub podwójnych cudzysłowów, nawiasów klamrowych, nawiasów kwadratowych i okrągłych nawiasów. Wyrażenia zawierają również funkcje i znaki, takie jak znaki dolara, przecinki i kropki.
Gdy wystąpi ten typ błędu, przejrzyj składnię wyrażenia. Aby zidentyfikować błędy szablonu, możesz użyć programu Visual Studio Code z najnowszym rozszerzeniem Bicep lub rozszerzeniem narzędzi usługi Azure Resource Manager.
Rozwiązanie 2. Niepoprawne długości segmentów
Inny nieprawidłowy błąd szablonu występuje, gdy nazwa zasobu nie jest w poprawnym formacie. Aby rozwiązać ten błąd, zobacz Rozwiązywanie błędów dotyczących niezgodności nazw i typów.
Rozwiązanie 3: Parametr nie jest prawidłowy
Dozwolone wartości parametru można określić w szablonie. Podczas wdrażania, jeśli podasz wartość, która nie jest dozwoloną wartością, zostanie wyświetlony komunikat podobny do następującego błędu:
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
Sprawdź szablon dozwolonych wartości parametru i użyj dozwolonej wartości podczas wdrażania. Aby uzyskać więcej informacji, zobacz dozwolone wartości dla Bicep lub szablonów ARM.
Rozwiązanie 4. Zbyt wiele docelowych grup zasobów
Możesz zobaczyć ten błąd we wcześniejszych wdrożeniach, ponieważ mogłeś ograniczyć się do pięciu docelowych grup zasobów w ramach jednego wdrożenia. W maju 2020 r. ten limit został zwiększony do 800 grup zasobów. Aby uzyskać więcej informacji, zobacz sposób wdrażania w wielu grupach zasobów dla Bicep lub szablonów ARM.
Rozwiązanie 5. Wykryto zależność cykliczną
Ten błąd występuje, gdy zasoby zależą od siebie w sposób uniemożliwiający uruchomienie wdrożenia. Kombinacja współzależności powoduje, że dwa lub więcej zasobów oczekują na inne zasoby, które również czekają. Na przykład resource1 zależy od , resource3 zależy resource2od resource1, i resource3 zależy od resource2. Ten problem można zwykle rozwiązać, usuwając niepotrzebne zależności.
Bicep tworzy niejawną zależność, gdy jeden zasób używa symbolicznej nazwy innego zasobu. Zwykle nie ma potrzeby stosowania jawnej zależności z użyciem dependsOn. Aby uzyskać więcej informacji, zobacz zależności Bicep.
Aby rozwiązać zależność cykliczną:
- W szablonie znajdź zasób zidentyfikowany w zależności cyklicznej.
- W przypadku tego zasobu sprawdź właściwość
dependsOnoraz wszelkie użycia funkcjireferencelubresourceId, aby zobaczyć, od których zasobów zależy. - Sprawdź te zasoby, aby sprawdzić, od których zasobów zależą. Postępuj zgodnie z zależnościami, dopóki nie zauważysz zasobu, który zależy od oryginalnego zasobu.
- W przypadku zasobów zaangażowanych w zależność cykliczną należy dokładnie zbadać wszystkie zastosowania
dependsOnwłaściwości, aby zidentyfikować wszelkie zależności, które nie są potrzebne. Aby rozwiązać problemy z wdrożeniem, usuń zależności cykliczne. Zamiast usuwać kod, możesz użyć komentarzy, aby kod nie był uruchamiany podczas następnego wdrożenia. W//lub plikach/* ... */można używać komentarzy jednowierszowych () lub wielowierszowych (). - Ponownie wdróż szablon.
Usunięcie wartości z dependsOn właściwości może spowodować błędy podczas wdrażania szablonu. Jeśli wystąpi błąd, dodaj zależność z powrotem do szablonu. Jeśli użyto komentarzy do obejścia kodu w szablonie, możesz usunąć komentarze, aby przywrócić kod.
Jeśli takie podejście nie rozwiąże zależności cyklicznej, rozważ przeniesienie części logiki wdrożeniowej do zasobów podrzędnych (takich jak rozszerzenia lub ustawienia konfiguracji). Skonfiguruj te zasoby podrzędne do wdrożenia po zakończeniu wdrażania zasobów powiązanych z zależnością cykliczną. Załóżmy na przykład, że wdrażasz dwie maszyny wirtualne, ale musisz ustawić właściwości na każdej z nich, które odwołują się do drugiej. Można je wdrożyć w następującej kolejności:
- Maszyna wirtualna1
- Maszyna wirtualna VM2
- Rozszerzenie maszyny wirtualnej vm1 zależy od maszyn wirtualnych vm1 i vm2. Rozszerzenie ustawia wartości maszyny wirtualnej vm1, które pobiera z maszyny wirtualnej vm2.
- Rozszerzenie maszyny wirtualnej vm2 zależy od maszyn wirtualnych vm1 i vm2. Rozszerzenie ustawia wartości na maszynie wirtualnej vm2, które pobiera z maszyny wirtualnej vm1.
To samo podejście działa w przypadku aplikacji usługi App Service. Rozważ przeniesienie wartości konfiguracji do zasobu podrzędnego zasobu aplikacji. Dwie aplikacje internetowe można wdrożyć w następującej kolejności:
- Aplikacja internetowa1
- Aplikacja internetowa2
- Konfiguracja aplikacji webapp1 zależy od aplikacji internetowej1 i aplikacji internetowej2. Zawiera ustawienia aplikacji z wartościami z webapp2.
- Konfiguracja aplikacji internetowej 2 zależy od aplikacji internetowej1 i aplikacji internetowej2. Zawiera ona ustawienia aplikacji z wartościami z aplikacji webapp1.
Rozwiązanie 6. Weryfikowanie składni wyeksportowanych szablonów
Po wdrożeniu zasobów na platformie Azure można wyeksportować kod JSON szablonu usługi ARM i zmodyfikować go na potrzeby innych wdrożeń. Przed użyciem go do wdrożenia zasobów należy zweryfikować wyeksportowany szablon pod kątem poprawnej składni.
Szablon można wyeksportować z poziomu portalu, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Istnieją zalecenia niezależnie od tego, czy szablon został wyeksportowany z zasobu lub grupy zasobów, czy z historii wdrożenia.
Po wyeksportowaniu szablonu ARM można dekompilować szablon JSON na Bicep. Następnie użyj najlepszych praktyk i lintera, aby zweryfikować kod.
Aby uzyskać więcej informacji, przejdź do następujących artykułów: