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-AzRestMethodsady nástrojů jsme přidali novou rutinu.

Viz také