Verwalten von Azure-Ressourcen mit Invoke-AzRestMethod
Invoke-AzRestMethod ist ein Azure PowerShell-Cmdlet, das in Az PowerShell-Modulversion 4.4.0 eingeführt wurde. Sie können benutzerdefinierte HTTP-Anforderungen mithilfe des Az-Kontexts an den Azure Resource Manager (ARM)-Endpunkt senden.
Dieses Cmdlet ist nützlich, wenn Sie Azure-Dienste für Features verwalten möchten, die noch nicht im Az PowerShell-Modul verfügbar sind.
Wie man Invoke-AzRestMethod verwendet
Beispielsweise können Sie den Zugriff auf azure Container Registry (ACR) nur für bestimmte Netzwerke zulassen oder den öffentlichen Zugriff verweigern. Ab Version 4.5.0 des Az PowerShell-Moduls ist diese Funktion im Az.ContainerRegistry PowerShell-Modulnoch nicht verfügbar. Es kann in der Zwischenzeit jedoch mit Invoke-AzRestMethod
verwaltet werden.
Verwenden von „Invoke-AzRestMethod“ mit GET-Vorgängen
Im folgenden Beispiel wird die Verwendung des Cmdlets Invoke-AzRestMethod
mit einem GET-Vorgang veranschaulicht:
$getParams = @{
ResourceGroupName = 'myresourcegroup'
ResourceProviderName = 'Microsoft.ContainerRegistry'
ResourceType = 'registries'
Name = 'myacr'
ApiVersion = '2019-12-01-preview'
Method = 'GET'
}
Invoke-AzRestMethod @getParams
Um maximale Flexibilität zu ermöglichen, sind die meisten Parameter für Invoke-AzRestMethod
optional.
Wenn Sie Jedoch Ressourcen innerhalb einer Ressourcengruppe verwalten, müssen Sie entweder die vollständige ID für die Ressource oder Parameter wie Ressourcengruppe, Ressourcenanbieter und Ressourcentyp bereitstellen.
Die Parameter ResourceType
und Name
können mehrere Werte annehmen, wenn Ressourcen angesprochen werden, die mehrere Namen erfordern. Um beispielsweise eine gespeicherte Suche in einem Log Analytics-Arbeitsbereich zu bearbeiten, sehen die Parameter wie das folgende Beispiel aus: -ResourceType @('workspaces', 'savedsearches') -Name @('my-la', 'my-search')
.
Das Cmdlet erstellt mithilfe einer Zuordnung, die auf der Position im Array basiert, die folgende Ressource: Id:'/workspaces/my-la/savedsearches/my-search'
.
Mit dem Parameter APIVersion
können Sie eine bestimmte API-Version verwenden, einschließlich der Vorschauversionen. Die unterstützten API-Versionen für Azure-Ressourcenanbieter finden Sie im azure-rest-api-specs GitHub repository.
Die Definition für die ACR-API-Version 2019-12-01-preview
befindet sich an folgendem Speicherort: azure-rest-api-specs/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/.
Verwenden von „Invoke-AzRestMethod“ mit PATCH-Vorgängen
Sie können den öffentlichen Zugriff auf das vorhandene ACR namens myacr
in der ressourcengruppe myresourcegroup
mithilfe des Cmdlets Invoke-AzRestMethod
deaktivieren.
Wenn Sie den Zugriff auf das öffentliche Netzwerk deaktivieren möchten, senden Sie einen PATCH-Aufruf an die API, der den Wert des Parameters publicNetwokAccess
wie im folgenden Beispiel gezeigt ändert:
$patchParams = @{
ResourceGroupName = 'myresourcegroup'
Name = 'myacr'
ResourceProviderName = 'Microsoft.ContainerRegistry'
ResourceType = 'registries'
ApiVersion = '2019-12-01-preview'
Payload = '{ "properties": {
"publicNetworkAccess": "Disabled"
} }'
Method = 'PATCH'
}
Invoke-AzRestMethod @patchParams
Die Payload
-Eigenschaft ist eine JSON-Zeichenfolge, die den Pfad der zu ändernden Eigenschaft anzeigt.
Alle Parameter für diese API werden in der rest-api-spec- Datei beschrieben, die dieser API zugeordnet ist.
Die spezifische Definition für den publicNetworkAccess-Parameter finden Sie in der JSON-Datei der Containerregistrierung für die API-Version 2019-12-01-preview
.
Um nur den Zugriff auf die Registrierung von einer bestimmten IP-Adresse zuzulassen, muss die Nutzlast geändert werden, wie im folgenden Beispiel gezeigt:
$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
Vergleich mit „Get-AzResource“, „New-AzResource“ und „Remove-AzResource“
Mit den cmdlets *-AzResource
können Sie den REST-API-Aufruf an Azure anpassen, indem Sie den Ressourcentyp, die API-Version und die zu aktualisierenden Eigenschaften angeben. Die Eigenschaften müssen jedoch zuerst als PSObject
erstellt werden. Dieser Prozess fügt eine zusätzliche Komplexitätsstufe hinzu und kann kompliziert werden.
Invoke-AzRestMethod
bietet eine Möglichkeit zum Verwalten von Azure-Ressourcen. Wie im vorherigen Beispiel gezeigt, können Sie eine JSON-Zeichenfolge erstellen und diese zum Anpassen des REST-API-Aufrufs verwenden, ohne vorab PSObjects
erstellen zu müssen.
Wenn Sie bereits mit den *-AzResource
Cmdlets vertraut sind, können Sie sie weiterhin verwenden. Wir haben keine Pläne, unsere Unterstützung einzustellen. Mit Invoke-AzRestMethod
haben wir Ihrem Toolkit ein neues Cmdlet hinzugefügt.
Weitere Informationen
Azure PowerShell