Как устранить ошибки проверки шаблона шаблона Azure ARM?

Я внес некоторые небольшие изменения в файл шаблона Azure ARM, и теперь, когда я пытаюсь развернуть или проверить с помощью xplat cli, я получаю это сообщение.

Ошибка: InvalidTemplateDeployment: развертывание шаблона "fakedDeploymentName" недействительно в соответствии с процедурой проверки. Идентификатор отслеживания - '\ какой-то GUID здесь'. Подробнее см. Внутренние ошибки. Подробнее см. Http://aka.ms/arm-deploy.

error: PreflightValidationCheckFailed: Не удалось выполнить проверку перед полетом. Пожалуйста, обратитесь к деталям для конкретных ошибок.

Я хотел бы устранить эту проблему, но я не вижу никаких "внутренних ошибок" на консоли. Это даже дает мне уникальный GUID каждый раз, подразумевая, что я могу использовать этот GUID для поиска более информативного сообщения. Где я могу просмотреть более подробную ошибку? (не ищите помощи на реальном источнике ошибки)

Ответ 1

Убедитесь, что вы используете последнюю версию CLI, мы работаем над тем, чтобы увеличить подробную ошибку. Если это еще не догоняет, сообщите нам об этом: https://github.com/Azure/azure-xplat-cli/issues

Затем, если журнал не показывает вас подробно, запустите развертывание с помощью переключателя -vv, подробный вывод отладки (в то время как подробный) будет содержать все сообщения об ошибках, и вы обычно можете просеять и найти конкретный сбой.

azure group deployment create ... -vv

Powershell:

New-AzureRmResourceGroupDeployment ... -debug

Ответ 2

Войдите в портал azure portal.azure.com.

Открыть журнал активности

Найдите запись с названием Operation Validate в списке действий. Он должен иметь красный восклицательный знак, потому что он потерпел неудачу.

Нажмите на эту запись. Затем нажмите вкладку JSON внизу. Получите чтение и где-то глубоко в возвращенном Json, вы можете обнаружить ошибку в statusMessage, такую как "Аккаунт хранилища с именем helloworld уже сделан".

Ответ 3

Запустите следующий командлет PowerShell Azure с указанным идентификатором отслеживания:

Get-AzureRMLog -CorrelationId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -DetailedOutput

Ответ 4

Основываясь на @nftw:

$deploymentGroupName = 'deploymentGroupName'
$correlationId = ((Get-AzureRMLog -ResourceGroup $deploymentGroupName)[0]).CorrelationId
$logentry = (Get-AzureRMLog -CorrelationId $correlationId -DetailedOutput)
#$logentry
$rawStatusMessage = $logentry.Properties
$status = $rawStatusMessage.Content.statusMessage | ConvertFrom-Json
$status.error.details
$status.error.details.details

Ответ 5

Я считаю, что идентификатор отслеживания предназначен для технической поддержки для просмотра их журналов, а не для пользователя. Что касается вашего точного вопроса, вам нужно взглянуть на журнал - ссылку.

Еще один хороший способ проверить шаблон - использовать проводник ресурсов.

Ответ 6

Я работал в том же выпуске. В принципе, я не мог получить никаких данных, переданных "InvalidTemplateDeployment".

Я добавил шаблон ARM в шаблон проекта Visual Studio: Azure Resource Group и попытался его развернуть. Я получил подробные сведения на вкладке "Вывод". Это помогло мне решить мою проблему.

В моем случае это было название кластера, это могут быть только маленькие буквы и цифры.