为什么我不能在模板输出中访问 publicIpAddress 的某些字段?

问题描述

在我的模板输出中,我想返回分配的公共 IP 地址。 我在“输出”部分尝试了以下内容:(在“对象”类型的输出中)

jwt-go

这有效并返回整个 publicIpAddress 对象:

"ipobj":   "[reference(variables('publicIPAddressName'),'2020-07-01','Full')]"

这符合API documentation of the publicIpAddress object。 我也可以检索一些属性,使用没有'Full'参数的引用,根据Azure doc,它应该返回{ {1}} 的对象。 这些工作:

  "ipobj": {
    "apiVersion": "2020-07-01","location": "eastus","sku": {
      "name": "Basic","tier": "Regional"
    },"properties": {
      "provisioningState": "Succeeded","resourceGuid": "...","ipAddress": "...","publicIPAddressversion": "IPv4","publicIPAllocationMethod": "Dynamic","idleTimeoutInMinutes": 4,"dnsSettings": {
        "domainNameLabel": "simplelinuxvm-zktwk4fzmy5p4","fqdn": "simplelinuxvm-zktwk4fzmy5p4.eastus.cloudapp.azure.com"
      },"ipTags": [],"ipConfiguration": {
        "id": "/subscriptions/.../resourceGroups/.../providers/Microsoft.Network/networkInterfaces/simpleLinuxVMNetInt/ipConfigurations/ipconfig1"
      }
    },"subscriptionId": "...","resourceGroupName": "...","scope": "","resourceId": "Microsoft.Network/publicIpAddresses/simpleLinuxVmpublicIP","referenceApiVersion": "2020-07-01","condition": true,"isConditionTrue": true,"istemplateResource": false,"isAction": false,"provisioningOperation": "Read"
  }

但其他一些属性无法访问:

properties

根据错误信息,(在中间例子的情况下):

"[reference(variables('publicIPAddressName')).dnsSettings.fqdn]"
"[reference(variables('publicIPAddressName')).publicIPAddressversion]"

因此,Azure 似乎不允许我访问完整输出中存在的属性。 这背后是否有任何解释/意图,或者至少有解决方法

注意:如果我将“字符串”输出(即不作为对象的一部分)定义为

,也会发生同样的情况
"[reference(variables('publicIPAddressName')).ipAddress]"
"[reference(variables('publicIPAddressName'),'Full').properties.ipAddress]"

The template output '...' is not valid: The language expression property 'ipAddress' doesn't exist,available properties are 'provisioningState,resourceGuid,publicIPAddressversion,publicIPAllocationMethod,idleTimeoutInMinutes,dnsSettings,ipTags'

解决方法

输出publicIpAddress对象的属性时,要注意定义正确的类型,与输出值相匹配。

"outputs": {
    "publicIpipAddress": {
        "type": "string","value": "[reference(parameters('publicIPAddresses_vmc_backupPublicIP_name'),'2020-07-01','Full').properties.ipAddress]"
    },"idleTimeoutInMinutes": {
        "type": "int",'Full').properties.idleTimeoutInMinutes]"
    }
}

enter image description here