Invoke-AzRestMethod ile Azure kaynaklarını yönetme

Invoke-AzRestMethod Az PowerShell modülü sürüm 4.4.0’da tanıtılan bir Azure PowerShell cmdlet’idir. Az bağlamını kullanarak Azure Resource Manager (ARM) uç noktasına özel HTTP istekleri göndermenizi sağlar.

Henüz Az PowerShell modülünde kullanıma sunulmamış özellikler için Azure hizmetlerini yönetmek istediğinizde bu cmdlet’ten faydalanabilirsiniz.

Invoke-AzRestMethod metodunu kullanma

Örneğin, Azure Container Registry’ye (ACR) yalnızca belirli ağlar için erişim izni verebilir veya genel erişimi reddedebilirsiniz. Az PowerShell modülü 4.5.0 sürümü itibarıyla bu özellik henüz Az.ContainerRegistry PowerShell modülünde kullanıma sunulmamıştır. Ancak, geçici olarak Invoke-AzRestMethod metoduyla yönetilebilir.

GET işlemleriyle Invoke-AzRestMethod yöntemini kullanma

Aşağıdaki örnekte, Invoke-AzRestMethod cmdlet’inin bir GET işlemiyle nasıl kullanıldığı gösterilmektedir:

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

En yüksek düzeyde esnekliğe olanak tanımak amacıyla, Invoke-AzRestMethod parametrelerinin çoğu isteğe bağlıdır. Ancak, bir kaynak grubu içindeki kaynakları yönetirken, kaynağa tam kimliği veya kaynak grubu, kaynak sağlayıcısı ve kaynak türü gibi parametreleri sağlamanız gerekir.

ResourceType ve Name parametreleri, birden fazla ad gerektiren kaynakları hedeflerken birden çok değer alabilir. Örneğin, Log Analytics çalışma alanında kayıtlı bir aramayı değiştirmek için parametreler şu örneğe benzer: -ResourceType @('workspaces', 'savedsearches') -Name @('my-la', 'my-search').

Cmdlet, dizideki konuma göre bir eşleme kullanarak şu kaynağı oluşturur: Id:'/workspaces/my-la/savedsearches/my-search'.

APIVersion parametresi, önizleme sürümleri dahil olmak üzere belirli bir API sürümünü kullanmanıza olanak verir. Azure kaynak sağlayıcıları için desteklenen API sürümleri azure-rest-api-specs adlı GitHub deposunda bulunabilir.

ACR API sürümünün 2019-12-01-preview tanımını şu konumda bulabilirsiniz: azure-rest-api-specs/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/.

PATCH işlemleriyle Invoke-AzRestMethod yöntemini kullanma

Invoke-AzRestMethod cmdlet’ini kullanarak myresourcegroup kaynak grubundaki myacr adlı mevcut ACR’ye yönelik genel erişimi devre dışı bırakabilirsiniz.

Genel ağ erişimini devre dışı bırakmak için, aşağıdaki resimde gösterildiği şekilde publicNetwokAccess parametresinin değerini değiştiren API’ye bir PATCH çağrısı yapmanız gerekir:

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

Payload özelliği, değiştirilecek özelliğin yolunu gösteren bir JSON dizesidir.

Bu API’ye yönelik tüm parametreler, bu API’yle ilişkili rest-api-spec dosyasında açıklanmıştır. publicNetworkAccess parametresinin özel tanımı, API sürümü için 2019-12-01-preview kapsayıcı kayıt defteri JSON dosyasında bulunabilir.

Kayıt defterine yalnızca belirli bir IP adresinden erişime izin vermek için yükün aşağıdaki örnekte gösterildiği gibi değiştirilmesi gerekir:

$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

Get-AzResource, New-AzResource ve Remove-AzResource karşılaştırması

*-AzResource cmdlet’leri kaynak türünü, API sürümünü ve güncelleştirilecek özellikleri belirterek Azure’a yapılan REST API çağrısını özelleştirmenize olanak verir. Ancak, özelliklerin önce PSObject olarak oluşturulması gerekir. Bu işlem ek bir karmaşıklık düzeyi ekler ve karmaşık hale gelebilir.

Invoke-AzRestMethod Azure kaynaklarını yönetmek için bir yol sunar. Önceki örnekte gösterildiği gibi, bir JSON dizesi derleyebilir ve herhangi PSObjectsbir önceden oluşturmak zorunda kalmadan REST API çağrısını özelleştirmek için kullanabilirsiniz.

*-AzResource cmdlet’lerini zaten biliyorsanız kullanmaya devam edebilirsiniz. Onları desteklemeyi durdurmayı planlayacağız. ile Invoke-AzRestMethodaraç setinize yeni bir cmdlet ekledik.

Ayrıca bkz: