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

如何通过Azure Logic App按计划逐个重启Azure App Service实例?

用Logic App + Azure API逐个重启多实例App Service

核心思路

借助Azure Resource Manager (ARM) API获取App Service的实例列表,通过Logic App的循环功能逐个触发单实例重启,配合延迟操作确保当前实例恢复服务后再处理下一个,以此避免全量重启导致的停机。

具体实现步骤

  1. 获取目标App Service的实例清单
    在Logic App中添加「HTTP」动作,调用ARM API拉取实例数据:

    GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/instances?api-version=2023-01-01
    

    需确保Logic App使用的身份(托管标识/服务主体)拥有Microsoft.Web/sites/instances/read权限,能正常读取实例信息。

  2. 遍历实例并逐个执行重启
    添加「Foreach」循环组件,绑定上一步获取的实例列表。循环内完成两个操作:

    • 调用单实例重启API:
      POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/instances/{instanceId}/restart?api-version=2023-01-01
      
      其中{instanceId}取自循环中当前实例对象的name字段。
    • 添加「延迟」动作(建议设置30-60秒),等待当前实例完成重启并恢复服务后,再进入下一轮循环。
  3. 可选:添加实例状态校验逻辑
    若只需重启运行中的实例,可在循环内先调用状态查询API:

    GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/instances/{instanceId}/status?api-version=2023-01-01
    

    根据返回的state字段(如Running)添加条件判断,仅当实例处于运行状态时执行重启操作。

权限要求

Logic App使用的身份需具备以下ARM权限:

  • Microsoft.Web/sites/instances/restart/action
  • Microsoft.Web/sites/instances/read
  • Microsoft.Web/sites/read

注意事项

  • 延迟时间需根据你的App Service实例的启动耗时调整,确保实例完全就绪后再处理下一个。
  • 若启用了自动缩放,建议在重启期间临时禁用该功能,避免缩放规则干扰实例操作。
  • 可为重启动作添加「重试」策略,处理单个实例重启失败的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 18:42:14