【问题标题】:ARM template array parameterARM 模板数组参数
【发布时间】:2017-11-23 10:19:12
【问题描述】:

我有一个带有 Web 应用程序警报规则的 ARM 模板,我希望能够配置哪些电子邮件收到警报。

电子邮件警报操作的 sn-p 如下:

"action": {
    "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleEmailAction",
    "sendToServiceOwners": false,
    "customEmails": [
        "email1@example.com",
        "email2@example.com"
    ]
}

相同的模板用于设置生产、测试​​和开发环境。所以我想为电子邮件警报使用一个参数。

如何根据逗号分隔的字符串或数组类型参数生成用作"customEmails" 属性的数组?

我试过"customEmails": "[array(parameters('AlertEmailRecipients'))]",也试过

"customEmails": [
    [array(parameters('AlertEmailRecipients'))]
]

但两者都不起作用。我不知道如何告诉它“customEmails”属性值应该来自一个参数。

【问题讨论】:

  • 我不明白这个问题,你能举个例子吗?如果您提供一个,这应该相当容易

标签: arrays azure arm-template


【解决方案1】:

我使用数组参数使用了以下内容:

参数声明:

"customEmails": {
      "type": "array",
      "metadata": {
        "description": "alert email addressess"
      }
}

在参数文件中:

"customEmails": {
      "value": [
        "email1@domain.com",
        "email2@domain.com"     
      ]
    }

用法:

"customEmails": "[parameters('customEmails')]"

【讨论】:

    【解决方案2】:

    我找到了解决方案。主要问题是我的逗号分隔的电子邮件地址列表在每个逗号后都有一个空格。

    我现在实现的方式是这样的:

    用逗号分隔的电子邮件地址列表定义一个字符串参数。 列表中不要有空格。

    像这样定义一个变量:

    "customEmails" : "[split(parameters('AlertEmailRecipients'), ',')]"
    

    然后在警报操作中引用该变量:

    "action": {
        "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleEmailAction",
        "sendToServiceOwners": false,
        "customEmails": "[variables('customEmails')]"
    }
    

    example 确实做到了这一点,但没有明确说明电子邮件列表不能包含空格。

    【讨论】:

    • 用几年的 ARM 模板经验重新审视这一点。还有一个replace 函数可以用来删除多余的空格:replace(parameters('AlertEmailRecipients'), ' ', '')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多