问题描述
在我的模板输出中,我想返回分配的公共 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]"
}
}