如何将数组连接到 ARM 模板中的字符串中?

How do I join array into a string in ARM template?

我有 ARM 模板参数,它是字符串数组(如下所示)。如何创建 string 类型的变量,即这些值的 join,即 "dominos","boeing"?

"parameters": {
      "clientObject": {
        "value": [
            "dominos",
            "boeing"
         ]
      }
   }

据我所知,没有简单的方法,唯一可行的解​​决方案 - 使用循环部署,伪代码如下所示:

{
    name: concat('deploy-', copyIndex(1))
    type: microsoft.resources/deployments
    apiVersion: xxx
    copy: {
        count: length(parameters('clientObject')
        name: yyy
        mode: serial // (don't remember exact name, not parallel)
    }
    properties: {
        parameters: {
            param1: parameters('clientObject')[copyIndex()]
            state: reference(concat('deploy-', copyIndex()).outputs.your_output.value
        }
    }
}

要检索它,您将使用:

reference(concat('deploy-', length(parameters('clientObject')).outputs.your_output.value

并且在嵌套模板中,您只需将当前 param1 传递给模板并将其连接到状态(其中声明它是前一个嵌套模板的输出 运行)

如果您知道数组(及其静态)的长度,您可以硬核一个 concat 函数或(更好)在 arm 模板之外进行连接

您可以使用 string() 函数,例如

[string(parameters('clientObject'))]

如果您不需要方括号,您可以使用 replace() 函数。