Fouten oplossen voor niet-overeenkomende resourcenaam en -type
In dit artikel wordt beschreven hoe u de fout kunt oplossen wanneer de indeling van de resourcenaam niet overeenkomt met de indeling van het resourcetype.
Symptoom
Wanneer u een sjabloon implementeert, ontvangt u een fout met de foutcode InvalidTemplate
. Het bericht geeft aan dat het resourcetype en de naam niet overeenkomen. Het stelt voor om het aantal segmenten in de naam te herstellen.
Oorzaak
Een resourcetype bevat de naamruimte van de resourceprovider en een of meer segmenten voor typen. Elk segment vertegenwoordigt een niveau in de resourcehiërarchie en wordt gescheiden door een slash.
{resource-provider-namespace}/{type-segment-1}/{type-segment-2}
De resourcenaam bevat een of meer segmenten, gescheiden door slashes. Het aantal segmenten moet overeenkomen met het aantal in het resourcetype.
{name-segment-1}/{name-segment-2}
Als het resourcetype en de naam een ander aantal segmenten bevatten, krijgt u deze fout.
Oplossing
Zorg ervoor dat u het niveau van het resourcetype begrijpt. Een sleutelkluisresource heeft bijvoorbeeld een volledig gekwalificeerde resource van Microsoft.KeyVault/vaults
. U kunt de naamruimte van de resourceprovider (Microsoft.KeyVault) negeren en u richten op het type (kluizen). Het heeft één segment.
Een sleutelkluisgeheim is een onderliggende resource van de kluis. Het heeft een volledig gekwalificeerde resourcetype van Microsoft.KeyVault/vaults/secrets
. Dit resourcetype heeft twee segmenten (kluizen/geheimen).
Als u een naam voor de sleutelkluis wilt opgeven, geeft u slechts één segment op, zoals examplevault123
. Als u een naam voor het geheim wilt opgeven, geeft u twee segmenten op, zoals examplevault123/examplesecret
. Het eerste segment geeft de sleutelkluis aan waarin dit geheim is opgeslagen.
In het volgende voorbeeld ziet u een geldige indeling voor de resourcenaam.
Er wordt een fout weergegeven als u een naam met meer dan één segment hebt opgegeven.
resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
name: 'contoso/examplevault123'
...
}
Wanneer u een onderliggende resource in de bovenliggende resource nestt, geeft u alleen het extra segment op. Het volledige resourcetype en de volledige naam bevatten nog steeds de waarden van de bovenliggende resource, maar ze zijn voor u samengesteld. In het volgende voorbeeld is secrets
het type en de naam .examplesecret
resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
name: 'examplevault123'
...
resource kvsecret 'secrets' = {
name: 'examplesecret'
properties: {
value: secretValue
}
}
}
Wanneer u de onderliggende resource buiten het bovenliggende item definieert, geeft u het volledige resourcetype op. Geef voor JSON de volledige resourcenaam op.
Gebruik voor Bicep de parent
eigenschap en geef de symbolische naam van de bovenliggende resource op. Wanneer u de bovenliggende eigenschap gebruikt, wordt de volledige naam voor u samengesteld, zodat u de naam van de onderliggende resource als één segment opgeeft.
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'
...
}
Zie Naam en type instellen voor onderliggende resources in Bicep of Naam en type instellen voor onderliggende resources in ARM-sjablonen voor meer informatie.