Condividi tramite


Gestire le risorse di Azure con Invoke-AzRestMethod

Invoke-AzRestMethod è un cmdlet di Azure PowerShell introdotto nel modulo Az PowerShell versione 4.4.0. Consente di effettuare richieste HTTP personalizzate all'endpoint di Azure Resource Manager (ARM) usando il contesto Az.

Questo cmdlet è utile quando si vogliono gestire i servizi di Azure per le funzionalità non ancora disponibili nel modulo Az PowerShell.

Come usare Invoke-AzRestMethod

Ad esempio, è possibile consentire l'accesso a Registro Azure Container solo per reti specifiche o negare l'accesso pubblico. A partire dal modulo Az PowerShell versione 4.5.0, tale funzionalità non è ancora disponibile nel modulo Az.ContainerRegistry di PowerShell . Tuttavia, può essere gestito temporaneamente con Invoke-AzRestMethod.

Uso di Invoke-AzRestMethod con operazioni GET

L'esempio seguente illustra come usare il cmdlet Invoke-AzRestMethod con un'operazione GET:

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

Per consentire la massima flessibilità, la maggior parte dei parametri per Invoke-AzRestMethod è facoltativa. Tuttavia, quando si gestiscono le risorse all'interno di un gruppo di risorse, è necessario fornire l'ID completo alla risorsa o ai parametri, ad esempio gruppo di risorse, provider di risorse e tipo di risorsa.

I parametri ResourceType e Name possono accettare più valori quando sono destinate a risorse che richiedono più di un nome. Ad esempio, per modificare una ricerca salvata in un'area di lavoro Log Analytics, i parametri sono simili all'esempio seguente: -ResourceType @('workspaces', 'savedsearches') -Name @('my-la', 'my-search').

Usando un mapping basato sulla posizione nella matrice, il cmdlet costruisce la risorsa seguente: Id:'/workspaces/my-la/savedsearches/my-search'.

Il parametro APIVersion consente di usare una versione api specifica, incluse quelle di anteprima. Le versioni dell'API supportate per i provider di risorse di Azure sono disponibili nella azure-rest-api-specs-specs repository GitHub.

È possibile trovare la definizione per la versione dell'API ACR 2019-12-01-preview nel percorso seguente: azure-rest-api-specs/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/.

Uso di Invoke-AzRestMethod con operazioni PATCH

È possibile disabilitare l'accesso pubblico all'ACR esistente denominato myacr nel gruppo di risorse myresourcegroup utilizzando il cmdlet Invoke-AzRestMethod.

Per disabilitare l'accesso alla rete pubblica, è necessario effettuare una chiamata patch all'API che modifica il valore del parametro , come illustrato nell'esempio seguente:

$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 proprietà Payload è una stringa JSON che mostra il percorso della proprietà da modificare.

Tutti i parametri per questa API sono descritti nel file rest-api-spec associato a questa API. La definizione specifica per il parametro publicNetworkAccess è disponibile nel file JSON del registro contenitori per la versione dell'API 2019-12-01-preview.

Per consentire solo l'accesso al Registro di sistema da un indirizzo IP specifico, il payload deve essere modificato come illustrato nell'esempio seguente:

$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

Confronto con Get-AzResource, New-AzResource e Remove-AzResource

I cmdlet *-AzResource consentono di personalizzare la chiamata API REST ad Azure specificando il tipo di risorsa, la versione dell'API e le proprietà da aggiornare. Tuttavia, le proprietà devono essere create per prime come PSObject. Questo processo aggiunge un ulteriore livello di complessità e può diventare complicato.

Invoke-AzRestMethod offre un modo per gestire le risorse di Azure. Come illustrato nell'esempio precedente, è possibile compilare una stringa JSON e usarla per personalizzare la chiamata API REST senza dover creare in precedenza qualsiasi PSObjects.

Se si ha già familiarità con i cmdlet *-AzResource, è possibile continuare a usarli. Non abbiamo intenzione di smettere di sostenerli. Grazie a Invoke-AzRestMethod, abbiamo aggiunto un nuovo cmdlet alla tua cassetta degli strumenti.

Vedere anche