Azure 为什么我不能访问模板输出中publicIpAddress的某些字段?
在我的模板输出中,我想返回分配的公共IP地址。 我在“输出”部分尝试了以下内容:(在“对象”类型的输出中) 这将工作并返回整个publicIpAddress对象:Azure 为什么我不能访问模板输出中publicIpAddress的某些字段?,azure,azure-resource-manager,azure-template,azure-rest-api,azure-public-ip,Azure,Azure Resource Manager,Azure Template,Azure Rest Api,Azure Public Ip,在我的模板输出中,我想返回分配的公共IP地址。 我在“输出”部分尝试了以下内容:(在“对象”类型的输出中) 这将工作并返回整个publicIpAddress对象: "ipobj": { "apiVersion": "2020-07-01", "location": "eastus", "sku": { "name":
"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"
}
这是符合实际情况的。
我还可以使用不带“Full”参数的引用来检索一些属性,根据,该参数应该返回对象的属性。
这些工作:
"[reference(variables('publicIPAddressName')).dnsSettings.fqdn]"
"[reference(variables('publicIPAddressName')).publicIPAddressVersion]"
但其他一些属性无法访问:
"[reference(variables('publicIPAddressName')).ipAddress]"
"[reference(variables('publicIPAddressName'),'2020-07-01','Full').properties.ipAddress]"
根据错误消息(对于中间示例):
因此,Azure似乎不允许我访问完整输出中的属性。
这背后是否有任何解释/意图,或者至少有一个解决办法
注意:如果将“字符串”输出(即不作为对象的一部分)定义为
或
输出publicIpAddress对象的属性时,应注意定义与输出值匹配的正确类型
"outputs": {
"publicIpipAddress": {
"type": "string",
"value": "[reference(parameters('publicIPAddresses_vmc_backupPublicIP_name'),'2020-07-01','Full').properties.ipAddress]"
},
"idleTimeoutInMinutes": {
"type": "int",
"value": "[reference(parameters('publicIPAddresses_vmc_backupPublicIP_name'),'2020-07-01','Full').properties.idleTimeoutInMinutes]"
}
}
它可以在idletimeoutting分钟内工作,但我仍然会收到相同的ipAddress错误。您好,请您将完整或准确的样本复制到我的邮箱中好吗?您应该尝试使用“[reference(variables('publicIPAddressName'),'2020-07-01','Full').properties.ipAddress]”而不是“”值“:“[reference(variables('publicIPAddressName')).ipAddress]”来输出publicIpAddress。您在尝试时错过了属性和api版本。我已经尝试过了。模板输出“ip”无效:语言表达式属性“ipAddress”不存在,可用属性为“provisioningState、resourceGuid、publicIPAddressVersion、publicIPAllocationMethod、IdleTimeoutingMinutes、dnsSettings、ipTags”…“您是否尝试了“值”:“[引用(变量('publicIPAddressName')、'2020-07-01'、'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'
"ip": {
"type": "string",
"value": "[reference(variables('publicIPAddressName')).ipAddress]"
}
"ip": {
"type": "string",
"value": "[reference(variables('publicIPAddressName'),'2020-07-01','Full').properties.ipAddress]"
},
"outputs": {
"publicIpipAddress": {
"type": "string",
"value": "[reference(parameters('publicIPAddresses_vmc_backupPublicIP_name'),'2020-07-01','Full').properties.ipAddress]"
},
"idleTimeoutInMinutes": {
"type": "int",
"value": "[reference(parameters('publicIPAddresses_vmc_backupPublicIP_name'),'2020-07-01','Full').properties.idleTimeoutInMinutes]"
}
}