Ошибка при вызове Azure Powershell New-AzResource: запрос содержимого недействителен - PullRequest
0 голосов
/ 03 октября 2019

Я застрял в этой ошибке Azure PowerShell при вызове New-AzResource:

new-azresource: InvalidRequestContent: содержимое запроса было недопустимым и не может быть десериализовано: «Не удалось найти элемент» зависит от'на объекте типа' ResourceProxyDefinition '. Путь 'disabledOn'. '.

Объект, который я передаю в аргумент -property New-AzResource, действительно является объектом со свойством зависимость от объекта. Таким образом, сообщение является приманкой. И, конечно, он отлично работает в CLI.

Интересно, что вы даже не можете найти это сообщение или подстроку ResourceProxyDefinition ни в одном коде для модуля Az PS (https://github.com/Azure/azure-powershell). IЯ исследовал это в той степени, в какой я могу себе представить, например, глядя на недооцененный API-интерфейс Azure и исходный код. Попробуйте поиск в Google ResourceProxyDefinition (без пробелов), и вы в основном попадете на проблему с GitHub, которую я угнал.

Для объекта свойства я начинаю с шаблона json (приведенного ниже, частично). Этот JSON работает непосредственно в CLI. Однако для модуля Azure powershell я использую ConvertFrom-Json для содержимого файла и передаю полученный объект какаргумент.

{
  "type": "Microsoft.VirtualMachineImages/imageTemplates",
  "apiVersion": "2019-05-01-preview",
  "location": "eastus2",
  "dependsOn": [],
  "tags": {
    "imagebuilderTemplate": "My.WindowsServer.2019-Datacenter-1910020354.tpl"
  },

  "properties": {
    "buildTimeoutInMinutes": 100,

    "source": {
      "type": "PlatformImage",
      "publisher": "MicrosoftWindowsServer",
      "offer": "WindowsServer",
      "sku": "2019-Datacenter",
      "version": "2019.0.20190603"
    },

1 Ответ

0 голосов
/ 04 октября 2019

С некоторыми изменениями в вашем шаблоне это будет выглядеть так:

{
  "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
    "name": "My.WindowsServer.2019-Datacenter-1910030425.tpl",
    "type": "Microsoft.VirtualMachineImages/imageTemplates",
    "apiVersion": "2019-05-01-preview",
    "location": "eastus2",
    "dependsOn": [],
    "tags": {
      "imagebuilderTemplate": "My.WindowsServer.2019-Datacenter-1910030425.tpl"
    },

    "properties": {
      "buildTimeoutInMinutes": 100,
      "source": {
        "type": "PlatformImage",
        "publisher": "MicrosoftWindowsServer",
        "offer": "WindowsServer",
        "sku": "2019-Datacenter",
        "version": "2019.0.20190603"

, что включает в себя добавление дополнительного уровня (вложив предыдущий шаблон в «ресурсы» и добавив «$ schema» и «contentVersion», выустановлены для развертывания.

Теперь используйте:

New-AzResourceGroupDeployment -ResourceGroupName $imageResourceGroup  `
    -TemplateFile $imageTemplateFile

, который будет читать в файле JSON, и это работает! Не используйте New-AzResource.

...