Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как устранить ошибку, если формат имени ресурса не соответствует формату типа ресурса.
Симптом
При развертывании шаблона возникает ошибка с кодом InvalidTemplate. Сообщение указывает, что тип ресурса и имя не совпадают. Он предлагает исправить количество сегментов в имени.
Причина
Тип ресурса содержит пространство имен поставщика ресурсов и один или несколько сегментов для типов. Каждый сегмент представляет уровень в иерархии ресурсов и разделяется косой чертой.
{resource-provider-namespace}/{type-segment-1}/{type-segment-2}
Имя ресурса содержит один или несколько сегментов, разделенных косой чертой. Число сегментов должно соответствовать числу в типе ресурса.
{name-segment-1}/{name-segment-2}
Если тип ресурса и имя содержат другое количество сегментов, вы получите эту ошибку.
Решение
Убедитесь, что вы понимаете уровень типа ресурса. Например, ресурс хранилища ключей имеет полный тип Microsoft.KeyVault/vaults ресурса. Пространство имен поставщика ресурсов (Microsoft.KeyVault) можно игнорировать и сосредоточиться на типе (хранилищах). Он имеет один сегмент.
Секрет хранилища ключей — это дочерний ресурс хранилища. Он имеет полностью квалифицированный тип ресурса Microsoft.KeyVault/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 или Set name and type for child resources in ARM templates.