Поделиться через


Управление ресурсами Azure с помощью Invoke-AzRestMethod

Invoke-AzRestMethod — это командлет Azure PowerShell, представленный в модуле Az PowerShell версии 4.4.0. Он позволяет выполнять пользовательские HTTP-запросы к конечной точке Azure Resource Manager (ARM) с помощью контекста Az.

Этот командлет полезен, если вы хотите управлять службами Azure для функций, которые еще не доступны в модуле Az PowerShell.

Как использовать Invoke-AzRestMethod

Например, можно разрешить доступ к реестру контейнеров Azure (ACR) только для определенных сетей или запретить общедоступный доступ. По состоянию на модуль Az PowerShell версии 4.5.0 эта функция пока недоступна в модуле Az.ContainerRegistry PowerShell. Однако его можно временно контролировать с помощью Invoke-AzRestMethod.

Использование Invoke-AzRestMethod с операциями GET-запросов

В следующем примере показано, как использовать командлет Invoke-AzRestMethod с операцией GET:

$getParams = @{
  ResourceGroupName = 'myresourcegroup'
  ResourceProviderName = 'Microsoft.ContainerRegistry'
  ResourceType = 'registries'
  Name = 'myacr'
  ApiVersion = '2019-12-01-preview'
  Method = 'GET'
}
Invoke-AzRestMethod @getParams

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

Параметры ResourceType и Name могут принимать несколько значений при выборе ресурсов, требующих нескольких имен. Например, для управления сохраненным поиском в рабочей области Log Analytics параметры выглядят следующим образом: -ResourceType @('workspaces', 'savedsearches') -Name @('my-la', 'my-search').

Используя сопоставление, основанное на позиции в массиве, командлет создает следующий ресурс: Id:'/workspaces/my-la/savedsearches/my-search'.

Параметр APIVersion позволяет использовать определенную версию API, включая предварительную версию. Поддерживаемые версии API для поставщиков ресурсов Azure можно найти в репозитории azure-rest-api-specs репозитории GitHub.

Определение для версии API ACR 2019-12-01-preview можно найти в следующем расположении: azure-rest-api-specs/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/.

Использование Invoke-AzRestMethod с операциями PATCH

Вы можете отключить общедоступность существующего myacr ACR в группе ресурсов myresourcegroup с помощью командлета Invoke-AzRestMethod.

Чтобы отключить доступ к общедоступной сети, необходимо выполнить вызов PATCH API, который изменяет значение параметра publicNetwokAccess, как показано в следующем примере:

$patchParams = @{
  ResourceGroupName = 'myresourcegroup'
  Name = 'myacr'
  ResourceProviderName = 'Microsoft.ContainerRegistry'
  ResourceType = 'registries'
  ApiVersion = '2019-12-01-preview'
  Payload = '{ "properties": {
     "publicNetworkAccess": "Disabled"
     } }'
  Method = 'PATCH'
}
Invoke-AzRestMethod @patchParams

Свойство Payload — это строка JSON, показывающая путь к свойству для изменения.

Все параметры этого API описаны в файле rest-api-spec, связанном с этим API. Определение для параметра publicNetworkAccess можно найти в файле JSON реестра контейнеров версии API 2019-12-01-preview.

Чтобы разрешить доступ к реестру только с определенного IP-адреса, данные нагрузки необходимо изменить, как показано в примере ниже.

$specificIpParams = @{
  ResourceGroupName = 'myresourcegroup'
  Name = 'myacr'
  ResourceProviderName = 'Microsoft.ContainerRegistry'
  ResourceType = 'registries'
  ApiVersion = '2019-12-01-preview'
  Payload = '{ "properties": {
      "networkRuleSet": {
      "defaultAction": "Deny",
      "ipRules": [ {
         "action": "Allow",
         "value": "24.22.123.123"
         } ]
      }
  } }'
  Method = 'PATCH'
}
Invoke-AzRestMethod @specificIpParams

Сравнение с Get-AzResource, New-AzResource и Remove-AzResource

Командлеты *-AzResource позволяют настроить вызов REST API в Azure, указав тип ресурса, версию API и обновляемые свойства. Однако сначала необходимо создать свойства как PSObject. Этот процесс добавляет дополнительный уровень сложности и может стать сложным.

Invoke-AzRestMethod предлагает способ управления ресурсами Azure. Как показано в предыдущем примере, можно создать строку JSON и использовать ее для настройки вызова REST API без необходимости предварительного создания каких-либо PSObjects.

Если вы уже знакомы с командлетами *-AzResource, вы можете продолжить их использовать. Мы не планируем прекратить их поддержку. С Invoke-AzRestMethodмы добавили новый командлет в ваш инструментарий.

См. также