Azure中如何迁移多个App Service至其他订阅?移动操作失败该如何处理
Azure App Service跨订阅迁移指南
单个App Service跨订阅迁移步骤
- 登录Azure门户,定位到目标App Service
- 进入概述页面,点击顶部的移动 > 移动到另一个订阅
- 按提示选择目标订阅与资源组,注意:App Service必须和所属的App Service计划处于同一订阅,要么将计划一并迁移,要么先在目标订阅创建匹配规格的计划
- 核对迁移内容,勾选同意条款后完成操作
批量迁移实现方案
Azure门户的手动移动功能确实不支持批量选中多个App Service,可通过以下两种方式实现批量操作:
方式1:Azure PowerShell脚本
# 登录Azure账号 Connect-AzAccount # 定义源/目标订阅、目标资源组信息 $sourceSubId = "源订阅ID" $targetSubId = "目标订阅ID" $targetResourceGroup = "目标资源组名称" # 获取指定资源组下的所有App Service $apps = Get-AzWebApp -ResourceGroupName "源资源组名称" # 循环迁移每个App Service及关联计划 foreach ($app in $apps) { # 提取并获取关联的App Service计划 $planName = $app.ServerFarmId.Split("/")[-1] $plan = Get-AzAppServicePlan -ResourceGroupName $app.ResourceGroupName -Name $planName # 若计划不在目标订阅,先迁移计划 if ($plan.SubscriptionId -ne $targetSubId) { Move-AzResource -ResourceId $plan.Id -DestinationSubscriptionId $targetSubId -DestinationResourceGroupName $targetResourceGroup -Force } # 迁移App Service Move-AzResource -ResourceId $app.Id -DestinationSubscriptionId $targetSubId -DestinationResourceGroupName $targetResourceGroup -Force }
方式2:Azure CLI脚本
# 登录Azure账号 az login # 切换到源订阅上下文 az account set --subscription "源订阅ID" # 获取指定资源组下所有App Service的ID app_ids=$(az webapp list --resource-group "源资源组名称" --query "[].id" -o tsv) # 循环迁移每个App Service及关联计划 for id in $app_ids; do # 提取关联的App Service计划ID plan_id=$(az webapp show --ids $id --query "serverFarmId" -o tsv) # 迁移计划(若不在目标订阅) az resource move --ids $plan_id --destination-subscription-id "目标订阅ID" --destination-resource-group "目标资源组名称" # 迁移App Service az resource move --ids $id --destination-subscription-id "目标订阅ID" --destination-resource-group "目标资源组名称" done
注意:批量迁移时必须同步处理所有依赖资源(如App Service计划、关联存储账户等),否则会触发失败。
备份恢复方式实现跨订阅迁移
完全可以通过备份+恢复的方式完成跨订阅迁移,步骤如下:
- 源App Service备份配置:
- 进入App Service的备份页面,点击配置
- 选择存储账户(可在源订阅,也可提前部署到目标订阅),设置备份频率与保留周期
- 手动触发一次即时备份
- 目标订阅创建匹配资源:
- 创建与源App Service同规格的App Service计划
- 创建App Service,确保运行时版本、操作系统与源端一致
- 恢复备份到目标App Service:
- 进入目标App Service的备份页面,点击恢复
- 选择源备份所在的存储账户(若存储在源订阅,需给目标App Service配置存储账户访问权限)
- 选中目标备份文件,确认设置后完成恢复
该方式优势是无需处理复杂的资源依赖迁移,适合重构资源组结构的场景;缺点是需要额外存储成本,且需逐个操作(可结合脚本实现批量备份恢复)。
批量移动失败的常见原因
- 依赖资源未同步迁移:App Service与所属计划分属不同订阅会导致迁移失败
- 权限不足:操作账户需同时拥有源、目标订阅的参与者或移动资源权限
- 资源锁定:源资源或目标资源组存在删除/只读锁,需先解除锁定
- 配额限制:目标订阅的App Service计划配额(实例数、内存等)不足以容纳迁移的资源
内容的提问来源于stack exchange,提问作者Jagan
相关产品推荐
相关产品推荐

