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

Azure WebApp:如何通过PowerShell或API重启单个实例

逐个重启Azure WebApp实例的自动化方案

我刚好处理过类似的场景,咱们可以通过PowerShell或者REST API来实现单个实例的重启,完全能配合cron作业定时执行,下面是具体的实现方法:

方案1:使用Azure PowerShell模块

这个方案适合已经配置好Azure PowerShell环境的场景,步骤很直观:

  1. 先确保安装并登录Azure PowerShell
    如果还没配置,先运行:

    Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force
    Connect-AzAccount
    

    (如果是在cron作业里执行,建议用服务主体登录,避免交互式验证)

  2. 编写逐个重启实例的脚本
    下面的脚本会先获取目标WebApp的所有实例,然后逐个重启,每次重启后可加个延迟(防止操作太频繁触发平台限制):

    # 配置你的资源组和WebApp名称
    $resourceGroupName = "你的资源组名称"
    $webAppName = "你的WebApp名称"
    
    # 获取WebApp的所有实例
    $instances = Get-AzWebAppInstance -ResourceGroupName $resourceGroupName -Name $webAppName
    
    # 逐个重启实例
    foreach ($instance in $instances) {
        Write-Host "正在重启实例: $($instance.Identity)"
        Restart-AzWebAppInstance -ResourceGroupName $resourceGroupName -Name $webAppName -InstanceId $instance.Identity
        # 可选:等待30秒再处理下一个实例
        Start-Sleep -Seconds 30
    }
    

    这个脚本里的Restart-AzWebAppInstance就是对应你手动重启单个实例的操作,完全复刻了手动流程的逻辑。

方案2:使用Azure REST API

如果更倾向于用REST API(比如在非Windows环境的cron作业里执行),可以按照以下步骤来:

  1. 获取Azure访问令牌
    你需要通过服务主体获取访问令牌,示例用curl实现:

    TENANT_ID="你的租户ID"
    CLIENT_ID="你的服务主体ID"
    CLIENT_SECRET="你的服务主体密钥"
    RESOURCE="https://management.azure.com/"
    
    TOKEN=$(curl -X POST "https://login.microsoftonline.com/$TENANT_ID/oauth2/token" \
      -F "grant_type=client_credentials" \
      -F "client_id=$CLIENT_ID" \
      -F "client_secret=$CLIENT_SECRET" \
      -F "resource=$RESOURCE" | jq -r '.access_token')
    
  2. 获取WebApp实例列表
    调用API获取所有实例:

    SUBSCRIPTION_ID="你的订阅ID"
    RESOURCE_GROUP="你的资源组名称"
    WEBAPP_NAME="你的WebApp名称"
    
    INSTANCES=$(curl -X GET "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Web/sites/$WEBAPP_NAME/instances?api-version=2023-01-01" \
      -H "Authorization: Bearer $TOKEN" | jq -r '.value[].name')
    
  3. 逐个重启实例
    循环遍历实例,调用重启API:

    for INSTANCE in $INSTANCES; do
        echo "正在重启实例: $INSTANCE"
        curl -X POST "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Web/sites/$WEBAPP_NAME/instances/$INSTANCE/restart?api-version=2023-01-01" \
          -H "Authorization: Bearer $TOKEN"
        # 可选:等待30秒
        sleep 30
    done
    

    这个REST调用和你手动点击重启单个实例时Azure后台执行的操作完全一致。

不管用哪种方案,都可以把脚本配置到cron作业里,设置夜间的定时任务,就能自动完成逐个重启的需求啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:21:37