能否通过Event Grid触发Logic App监控Azure资源的创建与删除?
解决Azure订阅资源变更通知的精准触发问题
问题出在哪
- 触发器选错了对象:你用的是
Microsoft.Resources.ResourceGroups相关触发器,这会把资源组层面的所有操作(包括部署审核阶段的元数据变更)都捕获到,所以部署还没完成就收到了通知。 - 事件类型太宽泛:
Microsoft.Resources.ResourceActionSuccess会涵盖大量非资源创建/删除的操作,比如资源组改标签、调权限这类小动作,导致没操作也会收到随机通知。
正确配置步骤
1. 换用订阅级Event Grid触发器
在Logic App里选**「When an event is raised (Event Grid)」**这个触发器,配置时:
- 资源类型选
Microsoft.Resources.Subscriptions - 只保留这两个核心事件类型(把多余的删掉):
Microsoft.Resources.ResourceWriteSuccess:资源创建/更新完成时触发Microsoft.Resources.ResourceDeleteSuccess:资源删除完成时触发
2. 加过滤规则掐掉无效事件
在触发器的「高级选项」里加过滤条件,只留你关心的资源操作:
- 过滤属性设为
data.operationName,匹配你需要监控的操作,比如:- 针对存储账户:
Microsoft.Storage/storageAccounts/write(创建/更新)、Microsoft.Storage/storageAccounts/delete(删除) - 针对ARM部署:
Microsoft.Resources/deployments/write
(按需添加对应资源类型的操作名)
- 针对存储账户:
3. 优化Teams通知内容
把事件里的关键信息塞进Teams消息,比如:
- 资源名称:
@{triggerBody()?['data']?['resourceName']} - 资源类型:
@{triggerBody()?['data']?['resourceType']} - 操作类型:
@{triggerBody()?['data']?['operationName']} - 操作人:
@{triggerBody()?['data']?['claims']?['name']} - 时间:
@{triggerBody()?['eventTime']}
这样收到的通知都是有用信息,不会乱糟糟的。
验证方式
部署个存储账户试试:
- 只有当存储账户完全创建好才会收到通知,不会在审核阶段就触发
- 没动任何资源时,不会再收到莫名其妙的通知
内容的提问来源于stack exchange,提问作者dodinin
相关产品推荐
相关产品推荐

