You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure Logic Apps接收虚拟机大小变更通知的问题

Azure Logic Apps接收虚拟机大小变更通知的问题

嗨,我来帮你梳理并解决这几个问题:

问题1:如何获取虚拟机变更前后的大小

当Microsoft.Compute/virtualMachines/write事件触发时,事件数据里其实包含了变更前的旧资源状态和变更后的新资源状态,你可以通过以下表达式获取:

  • 旧虚拟机大小:@triggerBody()?['data']['previousResource']['properties']['hardwareProfile']['vmSize']
  • 当前(新)虚拟机大小:@triggerBody()?['data']['resource']['properties']['hardwareProfile']['vmSize']

问题2:只在虚拟机大小变更时触发通知

你现在的触发器会捕获所有VM的写入操作(比如修改标签、添加磁盘等),要实现仅在大小变更时触发,需要在Logic Apps的条件判断里同时满足两个条件:

  1. 操作名称是Microsoft.Compute/virtualMachines/write
  2. 旧的VM大小不等于新的VM大小

问题3:修正你的条件表达式

你原来的表达式只判断了操作名称,没有加入大小对比的逻辑,所以无法过滤出仅大小变更的场景。这里给你修正后的完整If操作表达式:

{
  "type": "If",
  "expression": {
    "and": [
      {
        "equals": [
          "@triggerBody()?['data']['operationName']",
          "Microsoft.Compute/virtualMachines/write"
        ]
      },
      {
        "notEquals": [
          "@triggerBody()?['data']['previousResource']['properties']['hardwareProfile']['vmSize']",
          "@triggerBody()?['data']['resource']['properties']['hardwareProfile']['vmSize']"
        ]
      }
    ]
  },
  "actions": {
    // 这里放你发送邮件/Slack通知的操作,同时可以把新旧大小变量插入到通知内容里
  },
  "else": {
    // 可以留空,或者加入其他处理逻辑
  }
}

需要注意的是:确保你的Logic Apps触发器是Azure Event Grid触发器,并且订阅了虚拟机的Write事件,这样才能获取到包含previousResource的完整事件数据。如果用的是其他触发器(比如HTTP触发器),可能需要调整数据源的获取方式。

备注:内容来源于stack exchange,提问作者gotothesky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 07:03:13