Управление ресурсами Azure с помощью командлета Invoke-AzRestMethod
Invoke-AzRestMethod — это командлет Azure PowerShell, представленный в модуле PowerShell Az версии 4.4.0. Он позволяет выполнять пользовательские HTTP-запросы к конечной точке Azure Resource Manager (ARM) с помощью контекста Az.
Этот командлет удобно использовать, если требуется управлять службами Azure для функций, которые еще не доступны в модуле Az PowerShell.
Как использовать командлет Invoke-AzRestMethod
Например, вы можете разрешить доступ к Реестру контейнеров Azure (ACR) только для конкретных сетей или запретить общий доступ. На момент выхода версии модуля Az PowerShell 4.5.0 эта функция еще не доступна в модуле PowerShell Az.ContainerRegistry. Однако на промежуточном этапе ею можно управлять с помощью 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 можно найти в репозитории GitHub azure-rest-api-specs.
Определение версии 2019-12-01-preview
API ACR можно найти в следующем расположении: azure-rest-api-specs/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/.
Использование Invoke-AzRestMethod с операциями Patch
Вы можете отключить общий доступ к существующему списку ACR с именем myacr
в группе ресурсов 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.
Определение для параметра publicNetworkAccess можно найти в JSON-файле реестра контейнеров для 2019-12-01-preview
версии API.
Чтобы разрешить доступ к реестру только с определенного 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
мы добавили новый командлет в набор средств.
См. также
Azure PowerShell