Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como resolver o erro quando o formato do nome do recurso não corresponde ao formato do tipo de recurso.
Sintoma
Ao implantar um modelo, você recebe um erro com o código InvalidTemplatede erro . A mensagem indica que o tipo e o nome do recurso não correspondem. Sugere fixar o número de segmentos no nome.
Motivo
Um tipo de recurso contém o namespace do provedor de recursos e um ou mais segmentos para tipos. Cada segmento representa um nível na hierarquia de recursos e é separado por uma barra.
{resource-provider-namespace}/{type-segment-1}/{type-segment-2}
O nome do recurso contém um ou mais segmentos separados por barras. O número de segmentos deve corresponder ao número no tipo de recurso.
{name-segment-1}/{name-segment-2}
Se o tipo e o nome do recurso contiverem um número diferente de segmentos, você receberá esse erro.
Solução
Certifique-se de entender o nível do tipo de recurso. Por exemplo, um recurso do cofre de chaves tem um tipo de recurso totalmente qualificado de Microsoft.KeyVault/vaults. Você pode ignorar o namespace do provedor de recursos (Microsoft.KeyVault) e se concentrar no tipo (cofres). Tem um segmento.
Um segredo do cofre de chaves é um recurso filho do cofre. Ele tem um tipo de recurso totalmente qualificado de Microsoft.KeyVault/vaults/secrets. Esse tipo de recurso tem dois segmentos (cofres/segredos).
Para especificar um nome para o cofre de chaves, forneça apenas um segmento, como examplevault123. Para especificar um nome para o segredo, forneça dois segmentos, como examplevault123/examplesecret. O primeiro segmento indica o cofre de chaves em que esse segredo está armazenado.
O exemplo a seguir mostra um formato válido para o nome do recurso.
Você veria um erro se fornecesse um nome com mais de um segmento.
resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
name: 'contoso/examplevault123'
...
}
Ao aninhar um recurso filho dentro do recurso pai, forneça apenas o segmento extra. O tipo e o nome completos do recurso ainda contêm os valores do recurso pai, mas eles são construídos para você. No exemplo a seguir, o tipo é secrets e o nome é examplesecret.
resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
name: 'examplevault123'
...
resource kvsecret 'secrets' = {
name: 'examplesecret'
properties: {
value: secretValue
}
}
}
Ao definir o recurso filho fora do pai, forneça o tipo de recurso completo. Para JSON, forneça o nome completo do recurso.
Para Bicep, use a parent propriedade e forneça o nome simbólico do recurso pai. Quando você usa a propriedade pai, o nome completo é construído para você, portanto, você fornece o nome do recurso filho como um único segmento.
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'
...
}
Para obter mais informações, consulte Definir nome e tipo para recursos filho no Bicep ou Definir nome e tipo para recursos filho em modelos do ARM.