Я пытаюсь развернуть шаблон Bicep непосредственно из VSCode с расширением Bicep, но он постоянно терпит неудачу. Однако он отлично работает, когда я развертываю из PowerShell с помощью командлета New-AzResourceGroupDeployment
. Я что-то не так делаю или это баг?
Шаблон Bicep развертывает новую учетную запись хранения и содержит следующий параметр для имени учетной записи хранения:
param storageName string = 'mystorage${uniqueString(resourceGroup().id)}'
Когда я развертываю из VSCode, он не разрешается storageName
автоматически и предлагает мне подтвердить это:
Я считаю, что это приглашение является неожиданным. storageName
должны быть решены автоматически. Я нажимаю Enter для подтверждения. В конце концов, этот параметр должен автоматически изменяться.
И это не удается, когда я пытаюсь развернуть этот шаблон Bicep из VSCode. Вот сообщение о состоянии ошибки:
{
"status": "Failed",
"error": {
"code": "AccountNameInvalid",
"message": "[format('mystorage{0}', uniqueString(resourceGroup().id))] is not a valid storage account name. Storage account name must be between 3 and 24 characters in length and use numbers and lower-case letters only."
}
}
Насколько я вижу, по какой-то причине параметр storageName
не был преобразован в реальную строку (см. последнюю строку вывода). Поэтому ожидается, что ARM не позволит мне развернуть этот шаблон.
Get-AzResourceGroupDeployment -ResourceGroupName VSCodeBicepTest-RG -Name MyTestDeployment-FAILS
DeploymentName : MyTestDeployment-FAILS
ResourceGroupName : VSCodeBicepTest-RG
ProvisioningState : Failed
Timestamp : 19/01/2023 19:56:37
Mode : Incremental
TemplateLink :
Parameters :
Name Type Value
=============== ========================= ==========
location String "northeurope"
storageName String "[format('mystorage{0}', uniqueString(resourceGroup().id))]"
Кажется, все в порядке, когда я развертываю шаблон из PowerShell. Развертывание прошло успешно:
New-AzResourceGroupDeployment -Name MyTestDeployment-SUCCEEDS -ResourceGroupName VSCodeBicepTest-RG -TemplateFile ./sample-template.bicep
DeploymentName : MyTestDeployment-SUCCEEDS
ResourceGroupName : VSCodeBicepTest-RG
ProvisioningState : Succeeded
Timestamp : 19/01/2023 19:56:16
Mode : Incremental
TemplateLink :
Parameters :
Name Type Value
=============== ========================= ==========
location String "northeurope"
storageName String "mystoragedcgcd6nvj5tje"
Как видите, параметр storageName
правильно преобразовался в строку mystoragedcgcd6nvj5tje
. Это ожидаемо.
Прямо сейчас я не знаю, почему это происходит, но это похоже на ошибку в расширении Bicep для VSCode.
VSCode 1.74.3 (универсальный) на MacOS, Расширение бицепса v0.13.1.
Похоже, это известная ошибка. В качестве обходного пути вы можете обернуть интерполированные параметры с помощью string()
.
Например, измените это:
param storageName string = 'mystorage${uniqueString(resourceGroup().id)}'
К этому:
param storageName string = string('mystorage${uniqueString(resourceGroup().id)}')