咨询:如何获取ARM模板中Microsoft.Insights/actionGroups的ARM规范?
获取Microsoft.Insights/actionGroups的ARM模板规范及导出方案
我完全理解你的困扰——动作组作为全局资源,确实经常在常规的Azure门户导出模板流程中“隐身”,不过有几个实用的方法可以帮你获取它的ARM规范,甚至批量导出已有动作组的模板代码:
方法1:使用Azure CLI或PowerShell直接导出已有动作组
这是最直接获取现有动作组ARM定义的方式,能精准拿到你配置好的所有属性:
Azure CLI命令
# 导出单个动作组的属性(可直接用于ARM模板) az monitor action-group show --resource-group <你的资源组名称> --name <动作组名称> --query "properties" > action-group-def.json # 批量导出资源组内所有动作组 az resource list --resource-group <你的资源组名称> --resource-type "Microsoft.Insights/actionGroups" --query "[].{name:name, type:type, apiVersion:'2023-01-01', location:'Global', properties:properties}" > all-action-groups.json
PowerShell命令
# 导出单个动作组 Get-AzActionGroup -ResourceGroupName <你的资源组名称> -Name <动作组名称> | Select-Object name, @{Name='type'; Expression={'Microsoft.Insights/actionGroups'}}, @{Name='apiVersion'; Expression={'2023-01-01'}}, @{Name='location'; Expression={'Global'}}, properties | ConvertTo-Json -Depth 10 > action-group-def.json
导出后的JSON内容可以直接整合到你的ARM模板的resources数组中,只需要根据需求调整参数化部分即可。
方法2:参考官方ARM模板资源定义规范
如果你需要从零构建动作组的ARM模板,可以直接参考官方定义的完整属性结构,这里给你一个基础示例模板:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "actionGroupName": { "type": "string", "metadata": { "description": "名称 of the action group" } }, "actionGroupShortName": { "type": "string", "metadata": { "description": "短名称(用于短信/通知)" } }, "emailAddress": { "type": "string", "metadata": { "description": "接收通知的邮箱地址" } } }, "resources": [ { "type": "Microsoft.Insights/actionGroups", "apiVersion": "2023-01-01", "name": "[parameters('actionGroupName')]", "location": "Global", "properties": { "groupShortName": "[parameters('actionGroupShortName')]", "enabled": true, "emailReceivers": [ { "name": "primaryEmailReceiver", "emailAddress": "[parameters('emailAddress')]", "useCommonAlertSchema": true } ], // 可添加其他接收器类型:短信、Webhook、逻辑应用、自动化运行手册等 "smsReceivers": [] } } ] }
官方定义里包含了所有支持的接收器类型、可选参数(比如是否启用通用警报架构),你可以根据业务需求扩展这些配置。
方法3:用Azure Resource Graph批量查询动作组属性
如果你需要获取订阅内所有动作组的配置,可以用Resource Graph来快速检索:
resources | where type == 'microsoft.insights/actiongroups' | project name, resourceGroup, location, properties
查询结果会返回所有动作组的完整属性,你可以把这些内容转换成ARM模板的资源格式,批量添加到你的部署模板中。
为什么门户导出模板找不到动作组?
动作组的location是Global,属于全局资源,有时候门户的“导出模板”功能在筛选资源时会默认排除部分全局资源,或者需要你手动指定资源类型才能包含进来——这也是为什么用CLI/PowerShell或Resource Graph的方式更可靠。
内容的提问来源于stack exchange,提问作者Casper Dijkstra
相关产品推荐
相关产品推荐

