Správa prostředků Azure s využitím Invoke-AzRestMethod
Invoke-AzRestMethod je rutina Azure PowerShellu, která byla představena v modulu Az PowerShell verze 4.4.0. Umožňuje provádět vlastní požadavky HTTP na koncový bod Azure Resource Manageru (ARM) pomocí kontextu Az.
Tato rutina je užitečná, když chcete spravovat služby Azure pro funkce, které ještě nejsou v modulu AZ PowerShell k dispozici.
Jak využívat Invoke-AzRestMethod
Jako příklad můžete povolit přístup ke službě Azure Container Registry (ACR) jenom pro konkrétní sítě nebo odepřít veřejný přístup. Ve verzi 4.5.0 modulu Az PowerShellu tato funkce ještě není v modulu Az.ContainerRegistry PowerShellu k dispozici. K jeho správě je ale zatím možné využít Invoke-AzRestMethod
.
Použití rutiny Invoke-AzRestMethod s operacemi GET
Následující příklad ukazuje způsob využití rutiny Invoke-AzRestMethod
s operací GET:
$getParams = @{
ResourceGroupName = 'myresourcegroup'
ResourceProviderName = 'Microsoft.ContainerRegistry'
ResourceType = 'registries'
Name = 'myacr'
ApiVersion = '2019-12-01-preview'
Method = 'GET'
}
Invoke-AzRestMethod @getParams
Pro zajištění maximální flexibility je většina parametrů pro Invoke-AzRestMethod
volitelná.
Pokud ale spravujete prostředky v rámci skupiny prostředků, budete muset zadat úplné ID prostředku nebo parametry, jako je skupina prostředků, poskytovatel prostředků a typ prostředku.
Při cílení na prostředky vyžadující víc než jeden název mohou parametry ResourceType
a Name
přebírat několik hodnot. Pokud například chcete manipulovat uloženým hledáním v pracovním prostoru služby Log Analytics, parametry budou vypadat podobně jako v následujícím příkladu: -ResourceType @('workspaces', 'savedsearches') -Name @('my-la', 'my-search')
.
Pomocí mapování na základě pozice v poli rutina vytvoří následující prostředek: Id:'/workspaces/my-la/savedsearches/my-search'
.
Parametr APIVersion
umožňuje použít konkrétní verzi rozhraní API včetně verzí Preview. Podporované verze rozhraní API pro poskytovatele prostředků Azure najdete v úložišti azure-rest-api-specs na GitHubu.
Definici verze 2019-12-01-preview
rozhraní ACR API najdete v následujícím umístění: azure-rest-api-specs/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/.
Použití rutiny Invoke-AzRestMethod s operacemi PATCH
Pomocí rutiny Invoke-AzRestMethod
můžete zakázat veřejný přístup ke stávající službě ACR nazvané myacr
ve skupině prostředků myresourcegroup
.
Pokud chcete zakázat přístup k veřejné síti, musíte použít volání PATCH pro rozhraní API, které mění hodnotu parametru publicNetwokAccess
, jak ukazuje následující příklad:
$patchParams = @{
ResourceGroupName = 'myresourcegroup'
Name = 'myacr'
ResourceProviderName = 'Microsoft.ContainerRegistry'
ResourceType = 'registries'
ApiVersion = '2019-12-01-preview'
Payload = '{ "properties": {
"publicNetworkAccess": "Disabled"
} }'
Method = 'PATCH'
}
Invoke-AzRestMethod @patchParams
Vlastnost Payload
je řetězec JSON, který ukazuje cestu k měněné vlastnosti.
Všechny parametry pro toto rozhraní API jsou popsané v souboru rest-api-spec přidruženém k tomuto rozhraní API.
Konkrétní definici parametru publicNetworkAccess najdete v souboru JSON registru kontejneru 2019-12-01-preview
pro verzi rozhraní API.
Pokud chcete přístup k registru umožnit jenom z konkrétní IP adresy, musí se datová část upravit, jak ukazuje následující příklad:
$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
Srovnání s rutinami Get-AzResource, New-AzResource a Remove-AzResource
Rutiny *-AzResource
umožňují přizpůsobit volání rozhraní API do Azure určením typu prostředku, verze rozhraní API a vlastností, které se mají aktualizovat. Tyto vlastnosti se ale nejdřív musí vytvořit jako PSObject
. Tento proces přidává další úroveň složitosti a může se stát komplikovaným.
Invoke-AzRestMethod
nabízí způsob správy prostředků Azure. Jak je znázorněno v předchozím příkladu, můžete vytvořit řetězec JSON a použít ho k přizpůsobení volání rozhraní REST API bez nutnosti předem vytvořit .PSObjects
Pokud už znáte rutiny *-AzResource
, můžete je dál využívat. Nemáme v úmyslu je přestat podporovat. Do Invoke-AzRestMethod
sady nástrojů jsme přidali novou rutinu.