Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób rozwiązywania błędu, gdy format nazwy zasobu nie jest zgodny z formatem typu zasobu.
Objaw
Podczas wdrażania szablonu otrzymujesz błąd z kodem InvalidTemplate
. Komunikat wskazuje, że typ zasobu i nazwa nie są zgodne. Sugeruje skorygowanie liczby segmentów w nazwie.
Przyczyna
Typ zasobu zawiera przestrzeń nazw dostawcy zasobów i co najmniej jeden segment typów. Każdy segment reprezentuje poziom w hierarchii zasobów i jest oddzielony ukośnikiem.
{resource-provider-namespace}/{type-segment-1}/{type-segment-2}
Nazwa zasobu zawiera co najmniej jeden segment oddzielony ukośnikami. Liczba segmentów musi być zgodna z liczbą w typie zasobu.
{name-segment-1}/{name-segment-2}
Jeśli typ zasobu i nazwa zawierają inną liczbę segmentów, zostanie wyświetlony ten błąd.
Rozwiązanie
Upewnij się, że rozumiesz poziom typu zasobu. Na przykład zasób magazynu kluczy ma w pełni kwalifikowany typ zasobu Microsoft.KeyVault/vaults
. Możesz zignorować przestrzeń nazw dostawcy zasobów (Microsoft.KeyVault) i skoncentrować się na typie (sejfy). Ma jeden segment.
Tajemnica kluczowego magazynu to zasób podrzędny magazynu. Ma w pełni kwalifikowany typ zasobu Microsoft.KeyVault/vaults/secrets
. Ten typ zasobu ma dwa segmenty (skarbiec/sekrety).
Aby określić nazwę magazynu kluczy, wprowadź jedną część, taką jak examplevault123
. Aby określić nazwę sekretu, podaj dwa segmenty, takie jak examplevault123/examplesecret
. Pierwszy segment wskazuje magazyn kluczy, w którym przechowywana jest ta tajemnica.
W poniższym przykładzie przedstawiono prawidłowy format nazwy zasobu.
Jeśli podano nazwę z więcej niż jednym segmentem, zostanie wyświetlony błąd .
resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
name: 'contoso/examplevault123'
...
}
W przypadku zagnieżdżania zasobu podrzędnego w ramach zasobu nadrzędnego podaj tylko dodatkowy segment. Pełny typ zasobu i nazwa nadal zawierają wartości z zasobu nadrzędnego, ale są one tworzone dla Ciebie. W poniższym przykładzie typ to secrets
, a nazwa to examplesecret
.
resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
name: 'examplevault123'
...
resource kvsecret 'secrets' = {
name: 'examplesecret'
properties: {
value: secretValue
}
}
}
Podczas definiowania zasobu podrzędnego poza elementem nadrzędnym podaj pełny typ zasobu. W przypadku formatu JSON podaj pełną nazwę zasobu.
W przypadku Bicep skorzystaj z właściwości parent
i podaj symboliczną nazwę zasobu nadrzędnego. Korzystając z właściwości rodzica, pełna nazwa jest tworzona dla Ciebie, więc podajesz nazwę zasobu podrzędnego jako pojedynczy element.
resource kvsecret 'Microsoft.KeyVault/vaults/secrets@2022-07-01' = {
name: 'examplesecret'
parent: kv
properties: {
value: secretValue
}
}
resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
name: 'examplevault123'
...
}
Aby uzyskać więcej informacji, zobacz Ustawianie nazwy i typu zasobów podrzędnych w Bicep lub Ustawianie nazwy i typu zasobów podrzędnych w szablonach usługi ARM.