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

Azure VMSS自动缩放通知触发Azure Function多次执行问题

问题:Azure VMSS自动缩放通知触发Azure Function多次执行

当通过VMSS自动缩放通知的Webhook触发Azure Function时,函数会执行三次,导致Azure DevOps流水线和DNS更新被重复触发三次,不符合单次缩放事件仅执行一次的预期。手动执行函数代码时一切正常,仅运行一次,流水线和DNS更新均能正确触发。

VMSS配置

  • 已启用自动缩放,通过监控自动缩放通知触发缩放事件(包括横向缩减和横向扩展)后的后续操作

Azure Function信息

  • 语言:PowerShell 7.4
  • 触发器:HTTP Trigger
  • 用途:处理自动缩放通知,检查VMSS实例的预配状态,触发Azure DevOps流水线并更新DNS记录
  • 预期行为:每个缩放事件(横向缩减/扩展)触发一次函数,完成一次VMSS预配检查、流水线触发和DNS更新

VMSS发送的JSON负载示例

{
    "version": "1.0",
    "status": "Activated",
    "operation": "Scale Out",
    "context": {
        "timestamp": "2024-09-16T15:16:40.5377227Z",
        "id": "/subscriptions/sid/resourceGroups/rg-name/providers/microsoft.insights/autoscalesettings/auto-scale-set-vmss-name",
        "name": "auto-scale-set-vmss-name",
        "details": "Autoscale successfully started scale operation for resource 'vmss-name' from capacity '1' to capacity '2'",
        "subscriptionId": "sid",
        "resourceGroupName": "rg-name",
        "resourceName": "vmss-name",
        "resourceType": "microsoft.compute/virtualmachinescalesets",
        "resourceId": "/subscriptions/sid/resourceGroups/rg-name/providers/Microsoft.Compute/virtualMachineScaleSets/vmss-name",
        "portalLink": "https://portal.azure.com/#resource/subscriptions/sid/resourceGroups/rg/providers/Microsoft.Compute/virtualMachineScaleSets/vmss-name",
        "resourceRegion": "eastus",
        "oldCapacity": "1",
        "newCapacity": "2"
    },
    "properties": {}
}

推测原因

VMSS在缩放过程中会发送三个阶段的通知:"scale up initiated"、"scale up in progress"和"scale up completed",每个阶段的通知都会触发Webhook,进而导致函数多次执行。

复现步骤

  1. VMSS根据自动缩放规则执行横向扩展操作;
  2. HTTP触发的Azure Function处理自动缩放通知;
  3. 函数日志记录多条相同通知,单次横向扩展事件触发三次函数执行;
  4. Azure DevOps流水线和DNS更新操作被触发三次,不符合预期。

内容的提问来源于stack exchange,提问作者Alexandru Ene

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 09:05:10