Zarządzanie zasobami platformy Azure przy użyciu polecenia Invoke-AzRestMethod

Invoke-AzRestMethod to polecenie cmdlet usługi Azure PowerShell, które zostało wprowadzone w module Az programu PowerShell w wersji 4.4.0. Umożliwia ona wykonywanie niestandardowych żądań HTTP do punktu końcowego usługi Azure Resource Manager (ARM) przy użyciu kontekstu Az.

To polecenie cmdlet jest przydatne, gdy chcesz zarządzać usługami platformy Azure w przypadku funkcji, które nie są jeszcze dostępne w module Az programu PowerShell.

Jak używać polecenia cmdlet Invoke-AzRestMethod

Na przykład możesz zezwolić na dostęp do usługi Azure Container Registry (ACR) tylko dla określonych sieci lub odmówić dostępu publicznego. W wersji 4.5.0 modułu Az PowerShell ta funkcja nie jest jeszcze dostępna w module Az.ContainerRegistry programu PowerShell. Jednak w międzyczasie można nią zarządzać za pomocą polecenia cmdlet Invoke-AzRestMethod.

Używanie polecenia cmdlet Invoke-AzRestMethod z operacjami GET

W poniższym przykładzie pokazano, jak użyć polecenia cmdlet Invoke-AzRestMethod z operacją GET:

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

Aby zapewnić maksymalną elastyczność, większość parametrów polecenia cmdlet Invoke-AzRestMethod jest opcjonalna. Jednak w przypadku zarządzania zasobami w grupie zasobów należy podać pełny identyfikator zasobu lub parametrów, takich jak grupa zasobów, dostawca zasobów i typ zasobu.

Parametry ResourceType i Name mogą przyjmować wiele wartości w przypadku zasobów, które wymagają więcej niż jednej nazwy. Na przykład w celu manipulowania zapisanym wyszukiwaniem w obszarze roboczym usługi Log Analytics parametry wyglądają podobnie jak w poniższym przykładzie: -ResourceType @('workspaces', 'savedsearches') -Name @('my-la', 'my-search').

Korzystając z mapowania opartego na pozycji w tablicy, polecenie cmdlet konstruuje następujący zasób: Id:'/workspaces/my-la/savedsearches/my-search'.

Parametr APIVersion umożliwia korzystanie z określonej wersji interfejsu API, w tym jednej z wersji zapoznawczych. Obsługiwane wersje interfejsu API dla dostawców zasobów platformy Azure można znaleźć w repozytorium GitHub azure-rest-api-specs.

Definicję wersji interfejsu 2019-12-01-preview API usługi ACR można znaleźć w następującej lokalizacji: azure-rest-api-specs/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/.

Używanie polecenia cmdlet Invoke-AzRestMethod z operacjami PATCH

Dostęp publiczny do istniejącego elementu usługi ACR o nazwie myacr w grupie zasobów myresourcegroup możesz wyłączyć za pomocą polecenia cmdlet Invoke-AzRestMethod.

Aby wyłączyć dostęp do sieci publicznej, wykonaj wywołanie PATCH względem interfejsu API, które zmieni wartość parametru publicNetwokAccess, jak pokazano w następującym przykładzie:

$patchParams = @{
  ResourceGroupName = 'myresourcegroup'
  Name = 'myacr'
  ResourceProviderName = 'Microsoft.ContainerRegistry'
  ResourceType = 'registries'
  ApiVersion = '2019-12-01-preview'
  Payload = '{ "properties": {
     "publicNetworkAccess": "Disabled"
     } }'
  Method = 'PATCH'
}
Invoke-AzRestMethod @patchParams

Właściwość Payload jest ciągiem JSON, który pokazuje ścieżkę właściwości do zmodyfikowania.

Wszystkie parametry tego interfejsu API są opisane w skojarzonym z nim pliku rest-api-spec. Konkretną definicję parametru publicNetworkAccess można znaleźć w pliku JSON rejestru kontenerów dla wersji interfejsu 2019-12-01-preview API.

Aby zezwolić na dostęp do rejestru tylko z określonego adresu IP, należy zmodyfikować ładunek tak, jak pokazano w następującym przykładzie:

$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

Porównanie z poleceniami cmdlet Get-AzResource, New-AzResource i Remove-AzResource

Polecenia cmdlet *-AzResource umożliwiają dostosowanie wywołania interfejsu API REST względem platformy Azure przez określenie typu zasobu, wersji interfejsu API i właściwości do zaktualizowania. Należy jednak najpierw utworzyć właściwości jako PSObject. Ten proces dodaje dodatkowy poziom złożoności i może stać się skomplikowany.

Invoke-AzRestMethod oferuje sposób zarządzania zasobami platformy Azure. Jak pokazano w poprzednim przykładzie, można utworzyć ciąg JSON i użyć go do dostosowania wywołania interfejsu API REST bez konieczności wstępnego tworzenia dowolnego PSObjectselementu .

Jeśli masz już doświadczenie z poleceniami cmdlet *-AzResource, możesz nadal z nich korzystać. Nie planujemy ich wspierania. W programie Invoke-AzRestMethoddodaliśmy nowe polecenie cmdlet do zestawu narzędzi.

Zobacz też