Invoke-AzRestMethod 사용하여 Azure 리소스 관리
Invoke-AzRestMethod Az PowerShell 모듈 버전 4.4.0에서 도입된 Azure PowerShell cmdlet입니다. 이를 통해 Az 컨텍스트를 사용하여 ARM(Azure Resource Manager) 엔드포인트에 대한 사용자 지정 HTTP 요청을 수행할 수 있습니다.
이 cmdlet은 Az PowerShell 모듈에서 아직 사용할 수 없는 기능에 대한 Azure 서비스를 관리하려는 경우에 유용합니다.
Invoke-AzRestMethod 사용하는 방법
예를 들어 특정 네트워크에 대해서만 ACR(Azure Container Registry)에 대한 액세스를 허용하거나 공용 액세스를 거부할 수 있습니다. Az PowerShell 모듈 버전 4.5.0을 기준으로 해당 기능은 Az.ContainerRegistry PowerShell 모듈아직 사용할 수 없습니다. 그러나 Invoke-AzRestMethod
사용하여 중간에 관리할 수 있습니다.
GET 작업에서 Invoke-AzRestMethod 사용
다음 예제에서는 GET 작업과 함께 Invoke-AzRestMethod
cmdlet을 사용하는 방법을 보여 줍니다.
$getParams = @{
ResourceGroupName = 'myresourcegroup'
ResourceProviderName = 'Microsoft.ContainerRegistry'
ResourceType = 'registries'
Name = 'myacr'
ApiVersion = '2019-12-01-preview'
Method = 'GET'
}
Invoke-AzRestMethod @getParams
유연성을 극대화하기 위해 대부분의 Invoke-AzRestMethod
매개 변수는 선택 사항입니다.
그러나 리소스 그룹 내에서 리소스를 관리하는 경우 리소스에 전체 ID 또는 리소스 그룹, 리소스 공급자 및 리소스 종류와 같은 매개 변수를 제공해야 합니다.
ResourceType
및 Name
매개 변수는 둘 이상의 이름이 필요한 리소스를 대상으로 지정할 때 여러 값을 사용할 수 있습니다. 예를 들어 Log Analytics 작업 영역에서 저장된 검색을 조작하려면 매개 변수는 -ResourceType @('workspaces', 'savedsearches') -Name @('my-la', 'my-search')
예제와 같습니다.
배열의 위치에 따라 매핑을 사용하여 cmdlet은 다음 리소스를 생성합니다. Id:'/workspaces/my-la/savedsearches/my-search'
.
APIVersion
매개 변수를 사용하면 미리 보기 버전을 포함하여 특정 API 버전을 사용할 수 있습니다. Azure 리소스 공급자에 대해 지원되는 API 버전은 azure-rest-api-specs GitHub 리포지토리에서 찾을 수 있습니다.
2019-12-01-preview
ACR API 버전에 대한 정의는 azure-rest-api-specs/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/위치에서 찾을 수 있습니다.
PATCH 작업에서 Invoke-AzRestMethod 사용
Invoke-AzRestMethod
cmdlet을 사용하여 myresourcegroup
리소스 그룹의 myacr
명명된 기존 ACR에 대한 공용 액세스를 사용하지 않도록 설정할 수 있습니다.
공용 네트워크 액세스를 사용하지 않도록 설정하려면 다음 예제와 같이 PATCH API를 호출하여 publicNetwokAccess
매개 변수의 값을 변경해야 합니다.
$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
속성은 수정할 속성의 경로를 보여 주는 JSON 문자열입니다.
이 API에 대한 모든 매개 변수는 이 API와 연결된 rest-api-spec 파일에 설명되어 있습니다.
publicNetworkAccess 매개 변수에 대한 특정 정의는 2019-12-01-preview
API 버전의 컨테이너 레지스트리 JSON 파일 찾을 수 있습니다.
특정 IP 주소에서 레지스트리에 대한 액세스만 허용하려면 다음 예제와 같이 페이로드를 수정해야 합니다.
$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 및 Remove-AzResource 비교
*-AzResource
cmdlet을 사용하면 업데이트할 리소스 종류, API 버전 및 속성을 지정하여 Azure에 대한 REST API 호출을 사용자 지정할 수 있습니다. 그러나 속성을 먼저 PSObject
만들어야 합니다. 이 프로세스는 복잡성을 더하고 복잡해질 수 있습니다.
Invoke-AzRestMethod
Azure 리소스를 관리하는 방법을 제공합니다. 이전 예제와 같이 JSON 문자열을 빌드하고 이를 사용하여 PSObjects
미리 만들지 않고 REST API 호출을 사용자 지정할 수 있습니다.
*-AzResource
cmdlet에 이미 익숙한 경우 계속 사용할 수 있습니다. 우리는 그들을 지원하는 것을 중단 할 계획이 없습니다.
Invoke-AzRestMethod
을 사용하여 도구 키트에 새로운 cmdlet을 추가했습니다.
참고 항목
- Get-AzResource
- New-AzResource
- Remove-AzResource
Azure PowerShell