azure - Azure ARM 模板为数组参数中的每个值添加前缀
问题描述
在一个scheduledQueryRules
元素中,我们从参数文件中传递aznsAction.actionGroup
(数组)。
参数如下所示:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"actionGroups": {
"value": [
"ActionGroupName1",
"ActionGroupName2",
"ActionGroupName3",
"ActionGroupName4"
]
}
}
}
我们将它传递给 ARM 模板,如下所示:
...
"action": {
"odata.type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.Microsoft.AppInsights.Nexus.DataContracts.Resources.ScheduledQueryRules.AlertingAction",
"severity": "[variables('alertActions').SeverityLevel]",
"aznsAction": {
"actionGroup": "[array(parameters('actionGroups'))]"
},
"trigger": {
"thresholdOperator": "[variables('alertTrigger').Operator]",
"threshold": "[variables('alertTrigger').Threshold]"
}
}
...
ActionGroups 应该使用resourceId(..)
函数来选择,但是参数文件不支持这个。当我们将actionGroups
值替换为完整编写的资源路径时,部署工作正常,如下所示:
"actionGroups": {
"value": [
"/subscriptions/{id}/resourceGroups/{rg}/providers/microsoft.insights/actiongroups/ActionGroupName1",
"/subscriptions/{id}/resourceGroups/{rg}/providers/microsoft.insights/actiongroups/ActionGroupName2",
"/subscriptions/{id}/resourceGroups/{rg}/providers/microsoft.insights/actiongroups/ActionGroupName3",
"/subscriptions/{id}/resourceGroups/{rg}/providers/microsoft.insights/actiongroups/ActionGroupName4"
]
}
但由于我不想硬编码订阅和资源组,我正在寻找一种解决方案,我们可以在将单个数组值传递给aznsAction.actionGroup
.
我认为不可能在copy
这里使用。
基本上我想要这样的东西:
"aznsAction": {
"actionGroup": "[select[array(parameters('actionGroups'))], concat(resourceId(..), parameters('actionGroups')[iterator()])]"
}
有可能实现这样的目标吗?
解决方案
因此,如果您有一个包含类似操作组名称的参数:
"parameters": {
"actionGroups": {
"type": "array",
"value": [
"ActionGroupName1",
"ActionGroupName2",
"ActionGroupName3",
"ActionGroupName4"
]
}
}
您可以创建一个变量来将数组转换为操作组 ID 数组:
"variables": {
"copy": [
{
"name": "actionGroupIds",
"count": "[length(parameters('actionGroups'))]",
"input": "[resourceId('Microsoft.Insights/ActionGroups', parameters('actionGroups')[copyIndex('actionGroupIds')])]"
}
]
}
那么你可以像这样使用它:
"aznsAction": {
"actionGroup": "[variables('actionGroupIds')]"
}
推荐阅读
- java - 如何使用 sap hana 中的查询为视图创建触发器
- linux - 无法在终端中解压缩 .gz 文件 - file.gz:不是 gzip 格式
- python - Python值传递给构造函数,变量仍然为空
- excel - VB.Net - 循环槽行并在其单元格中输入数据
- material-ui - 如何从材质表中的自定义操作按钮中删除背景波纹效果?
- php - laravel - 更新一对多多态关系
- javascript - 如何设置多组正则表达式的字符数?
- sql - 将 SQL 查询转换为 Sequelize ORM 会返回不需要的结果
- android - Material TextAppearance 对处理不同的 textSize 有用吗
- python - 多租户应用程序无法遍历模型