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 de PowerShell de Az. 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 Az PowerShell, esa característica aún no está disponible en el módulo de PowerShell Az.ContainerRegistry. Sin embargo, se puede administrar provisionalmente con Invoke-AzRestMethod.

Uso de Invoke-AzRestMethod con operaciones GET

En el ejemplo siguiente se muestra cómo usar el Invoke-AzRestMethod cmdlet 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 para 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 ResourceType parámetros 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 de la matriz, el cmdlet construye el siguiente recurso: Id:'/workspaces/my-la/savedsearches/my-search'.

El APIVersion parámetro 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 de GitHub azure-rest-api-specs .

Puede encontrar la definición de la versión de la 2019-12-01-preview API de ACR 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 myresourcegroup grupo de recursos mediante el Invoke-AzRestMethod cmdlet .

Para deshabilitar el acceso a la red pública, debe realizar una llamada PATCH a la API que cambie el valor del publicNetwokAccess parámetro 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 Payload propiedad es una cadena JSON que muestra la ruta de acceso 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 para la versión de la 2019-12-01-preview API.

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 *-AzResource cmdlets permiten personalizar la llamada a 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 compilar una cadena JSON y usarla para personalizar la llamada a la API REST sin tener que crear previamente ninguna PSObjects.

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

Véase también