Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья описывает, как устранить ошибку, если формат имени ресурса не соответствует формату типа ресурса.
Симптом
При развертывании шаблона появляется сообщение об ошибке с кодом InvalidTemplate
ошибки . Сообщение указывает на несоответствие типа и имени ресурса. Оно предлагает исправить число сегментов в имени.
Причина
Тип ресурса содержит пространство имен поставщика ресурсов и один или несколько сегментов для типов. Каждый сегмент представляет уровень в иерархии ресурсов и отделяется косой чертой.
{resource-provider-namespace}/{type-segment-1}/{type-segment-2}
Имя ресурса содержит один или несколько сегментов, разделенных косой чертой. Это число сегментов должно соответствовать числу сегментов в типе ресурса.
{name-segment-1}/{name-segment-2}
Если тип и имя ресурса содержат различное число сегментов, возникает эта ошибка.
Решение
Убедитесь, что вы понимаете, к какому уровню относится тип ресурса. Например, ресурс хранилища ключей имеет полный тип ресурса Microsoft.KeyVault/vaults
. Вы можете игнорировать пространство имен поставщика ресурсов (Microsoft.KeyVault) и сконцентрироваться на типе (vaults). Он имеет один сегмент.
Секрет хранилища ключей является дочерним ресурсом этого хранилища. Он имеет полный тип ресурса Microsoft.KeyVault/vaults/secrets
. Этот тип ресурса имеет два сегмента (vaults/secrets).
Чтобы задать имя для хранилища ключей, укажите только один сегмент, например examplevault123
. Чтобы задать имя секрета, укажите два сегмента, например examplevault123/examplesecret
. Первый сегмент указывает хранилище ключей, где хранится этот секрет.
В следующем примере показан допустимый формат для имени ресурса.
Если вы указали имя с несколькими сегментами, возникнет ошибка.
resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
name: 'contoso/examplevault123'
...
}
При вложении дочернего ресурса в родительский укажите только дополнительный сегмент. Полный тип и имя ресурса по-прежнему содержат значения родительского ресурса, но они сформированы за вас. В следующем примере тип имеет значение secrets
, а имя — examplesecret
.
resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
name: 'examplevault123'
...
resource kvsecret 'secrets' = {
name: 'examplesecret'
properties: {
value: secretValue
}
}
}
Когда вы определяете дочерний ресурс за пределами родительского, укажите полный тип ресурса. В JSON укажите полное имя ресурса.
Для Bicep используйте свойство parent
и укажите символьное имя родительского ресурса. При использовании родительского свойства полное имя будет создано за вас, поэтому нужно указать имя дочернего ресурса в виде одного сегмента.
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'
...
}
Дополнительные сведения см. в разделе Настройка имени и типа для дочерних ресурсов в Bicep или Настройка имени и типа для дочерних ресурсов в шаблонах ARM.