azure-powershellazure-api-managementvnetazure-custom-domain

Failed to setup Custom Domain for APIM using PowerShell script


I am trying to setup custom domain for my APIM instance using below script

[CmdletBinding()]
param (
    [String]
    $ResourceGroupName,
    [String]
    $Hostname,
    [String]
    $ApimServiceName,
    [string]
    $KeyVaultId
)
$ProxyHostnameConf = New-AzApiManagementCustomHostnameConfiguration -Hostname $Hostname -HostnameType "Proxy" -KeyVaultId $KeyVaultId -DefaultSslBinding
$apim = Get-AzApiManagement -ResourceGroupName $ResourceGroupName -Name $ApimServiceName
$apim.ProxyCustomHostnameConfiguration = $ProxyHostnameConf
Set-AzApiManagement -InputObject $apim 

But the script is failing with below error

Line |
  15 |  Set-AzApiManagement -InputObject $apim
     |  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | 'SubnetResourceId' does not match expected pattern
     | '^/subscriptions/[^/]*/resourceGroups/[^/]*/providers/Microsoft.(ClassicNetwork|Network)/virtualNetworks/[^/]*/subnets/[^/]*$'.

I am getting this error both in my local machine as well as from the devops Microsoft hosted agent


Solution

  • I was able to fix this using azure cli command mentioned in the below ink

    Azure CLI - Bash script to set up API Management custom domain

    [CmdletBinding()]
    param (
        [String]
        $ResourceGroupName,
        [String]
        $HostName,
        [String]
        $KeyVaultId,
        [String]
        $ApimServiceName
    )
    $config ='[{\"hostName\":\"'+$HostName+'\",\"type\":\"Proxy\",\"keyVaultId\":\"'+$KeyVaultId+'\",\"defaultSslBinding\":true,\"negotiateClientCertificate\":false}]'
    Write-Host $config
    az apim update --resource-group $ResourceGroupName --name  $ApimServiceName --set hostnameConfigurations=$config