Azure蓝图部署,获取ACR集群publicIPAddresses的Resource ID

问题描述

我有一个 Azure 蓝图,用于部署 Azure ACR 集群。创建集群也会触发创建集群的 publicIPAddresses。我需要获取该 IP 的资源 ID,以便能够自动为该 IP 分配 DNS/A 记录。

我在artifact中想到了这个输出记录,它创建了ACR Cluster:

"outputs": {
      "IPAddress": {
          "type": "string","value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))).id]"
        },}

,我认为这可以帮助我动态获取该资源 ID,但它似乎不起作用。有人可以指出,我做错了什么吗?

谢谢!

解决方法

尝试将“Full”添加到您的 reference() 函数调用中,这会指示调用返回所有属性,包括 id。

见:https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-resource?tabs=json#reference

,

实际上,如果你只想获取资源Id,你只需要使用函数resourceId(),而不是reference()。所以输出的值应该是这样的:

"value": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]"

请注意,也许您想创建一个 AKS 集群,ACR 是一个存储 docker 镜像的容器注册表,它不需要公共 IP 地址。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...