Compartir a través de


Administración de recursos de Azure con Invoke-AzRestMethod

Invoke-AzRestMethod es un cmdlet de Azure PowerShell que se introdujo en la versión 4.4.0 del módulo Az PowerShell. Permite realizar solicitudes HTTP personalizadas al punto de conexión de Azure Resource Manager (ARM) mediante el contexto de Az.

Este cmdlet es útil cuando desea administrar los servicios de Azure para las características que aún no están disponibles en el módulo de Az PowerShell.

Cómo usar Invoke-AzRestMethod

Por ejemplo, puede permitir el acceso a Azure Container Registry (ACR) solo para redes específicas o denegar el acceso público. A partir de la versión 4.5.0 del módulo de PowerShell Az , esa característica aún no está disponible en el módulo de PowerShell Az.ContainerRegistry. Sin embargo, se puede administrar con Invoke-AzRestMethod provisionalmente.

Uso de Invoke-AzRestMethod con operaciones GET

En el ejemplo siguiente se muestra cómo usar el cmdlet Invoke-AzRestMethod con una operación GET:

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

Para permitir la máxima flexibilidad, la mayoría de los parámetros de Invoke-AzRestMethod son opcionales. Sin embargo, al administrar recursos dentro de un grupo de recursos, deberá proporcionar el identificador completo al recurso o parámetros, como el grupo de recursos, el proveedor de recursos y el tipo de recurso.

Los parámetros ResourceType y Name pueden tomar varios valores al dirigirse a recursos que requieren más de un nombre. Por ejemplo, para manipular una búsqueda guardada en un área de trabajo de Log Analytics, los parámetros tienen el siguiente aspecto: -ResourceType @('workspaces', 'savedsearches') -Name @('my-la', 'my-search').

Con una asignación basada en la posición en la matriz, el cmdlet construye el siguiente recurso: Id:'/workspaces/my-la/savedsearches/my-search'.

El parámetro APIVersion permite usar una versión de API específica, incluidas las de vista previa. Las versiones de API admitidas para los proveedores de recursos de Azure se pueden encontrar en el repositorio azure-rest-api-specs GitHub.

Encontrará la definición de la versión 2019-12-01-preview ACR API en la siguiente ubicación: azure-rest-api-specs/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/.

Uso de Invoke-AzRestMethod con operaciones PATCH

Puede deshabilitar el acceso público al ACR existente denominado myacr en el grupo de recursos de myresourcegroup mediante el cmdlet Invoke-AzRestMethod.

Para deshabilitar el acceso a la red pública, debe realizar una llamada PATCH a la API que cambie el valor del parámetro publicNetwokAccess como se muestra en el ejemplo siguiente:

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

La propiedad Payload es una cadena JSON que muestra la ruta de la propiedad que se va a modificar.

Todos los parámetros de esta API se describen en el archivo rest-api-spec asociado a esta API. La definición específica del parámetro publicNetworkAccess se puede encontrar en el archivo JSON del registro de contenedor de para la versión de la API de 2019-12-01-preview.

Para permitir solo el acceso al Registro desde una dirección IP específica, la carga debe modificarse como se muestra en el ejemplo siguiente:

$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

Comparación con Get-AzResource, New-AzResource y Remove-AzResource

Los cmdlets de *-AzResource permiten personalizar la llamada de la API REST a Azure especificando el tipo de recurso, la versión de la API y las propiedades que se van a actualizar. Sin embargo, las propiedades deben crearse primero como PSObject. Este proceso agrega un nivel adicional de complejidad y puede complicarse.

Invoke-AzRestMethod ofrece una manera de administrar los recursos de Azure. Como se muestra en el ejemplo anterior, puede crear una cadena JSON y usarla para personalizar la llamada a la API REST sin tener que crear previamente ningún PSObjects.

Si ya está familiarizado con los cmdlets de *-AzResource, puede seguir usándolos. No tenemos planes para dejar de apoyarlos. Con Invoke-AzRestMethod, hemos agregado un nuevo cmdlet al kit de herramientas.

Consulte también