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
$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.