Řešení chyb kvůli neshodě názvů a typů prostředků
Tento článek popisuje, jak vyřešit chybu, když formát názvu prostředku neodpovídá formátu typu prostředku.
Příznak
Při nasazování šablony se zobrazí chyba s kódem InvalidTemplate
chyby . Zpráva značí, že se typ a název prostředku neshodují. Navrhuje opravit počet segmentů v názvu.
Příčina
Typ prostředku obsahuje obor názvů poskytovatele prostředků a jeden nebo více segmentů pro typy. Každý segment představuje úroveň v hierarchii prostředků a je oddělený lomítkem.
{resource-provider-namespace}/{type-segment-1}/{type-segment-2}
Název prostředku obsahuje jeden nebo více segmentů oddělených lomítky. Počet segmentů se musí shodovat s počtem v typu prostředku.
{name-segment-1}/{name-segment-2}
Pokud typ a název prostředku obsahují různý počet segmentů, zobrazí se tato chyba.
Řešení
Ujistěte se, že rozumíte úrovni typu prostředku. Například prostředek trezoru klíčů má plně kvalifikovaný typ Microsoft.KeyVault/vaults
prostředku . Obor názvů poskytovatele prostředků (Microsoft.KeyVault) můžete ignorovat a zaměřit se na typ (trezory). Má jeden segment.
Tajný klíč trezoru klíčů je podřízený prostředek trezoru. Má plně kvalifikovaný typ Microsoft.KeyVault/vaults/secrets
prostředku . Tento typ prostředku má dva segmenty (trezory/tajné kódy).
Pokud chcete zadat název trezoru klíčů, zadejte jenom jeden segment, například examplevault123
. Pokud chcete zadat název tajného kódu, zadejte dva segmenty, například examplevault123/examplesecret
. První segment označuje trezor klíčů, ve kterém je tento tajný klíč uložený.
Následující příklad ukazuje platný formát pro název prostředku.
Pokud zadáte název s více než jedním segmentem, zobrazí se chyba .
resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
name: 'contoso/examplevault123'
...
}
Když v nadřazený prostředek vnoříte podřízený prostředek, zadejte pouze další segment. Úplný typ prostředku a název stále obsahují hodnoty z nadřazeného prostředku, ale jsou vytvořené pro vás. V následujícím příkladu je secrets
typ a název je examplesecret
.
resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
name: 'examplevault123'
...
resource kvsecret 'secrets' = {
name: 'examplesecret'
properties: {
value: secretValue
}
}
}
Při definování podřízeného prostředku mimo nadřazený prostředek zadejte úplný typ prostředku. Pro JSON zadejte úplný název prostředku.
Pro Bicep použijte parent
vlastnost a zadejte symbolický název nadřazeného prostředku. Když použijete nadřazenou vlastnost, celý název se vytvoří za vás, takže název podřízeného prostředku zadáte jako jeden segment.
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'
...
}
Další informace najdete v tématech Nastavení názvu a typu pro podřízené prostředky v nástroji Bicepa Nastavení názvu a typu pro podřízené prostředky v šablonách ARM.