Перемещение ресурсов в новую группу ресурсов или подпискуMove resources to a new resource group or subscription

В этой статье показано, как переместить ресурсы Azure в другую подписку Azure или другую группу ресурсов в той же подписке.This article shows you how to move Azure resources to either another Azure subscription or another resource group under the same subscription. Для перемещения ресурса можно использовать портал Azure, Azure PowerShell, интерфейс командной строки Azure или REST API.You can use the Azure portal, Azure PowerShell, Azure CLI, or the REST API to move resources.

Группа источника и группа назначения блокируются на время операции перемещения.Both the source group and the target group are locked during the move operation. Операции записи и удаления для групп ресурсов блокируются до завершения перемещения.Write and delete operations are blocked on the resource groups until the move completes. Эта блокировка означает, что невозможно добавить, обновить или удалить ресурсы в группах ресурсов, но не означает, что эти ресурсы закреплены.This lock means you can't add, update, or delete resources in the resource groups, but it doesn't mean the resources are frozen. Например, если переместить в новую группу ресурсов экземпляр SQL Server и его базу данных, то приложение, использующее эту базу данных, не будет испытывать простоев в работе.For example, if you move a SQL Server and its database to a new resource group, an application that uses the database experiences no downtime. Оно по-прежнему сможет считывать данные из базы данных и записывать их в нее.It can still read and write to the database.

Перемещение ресурса перемещает его только в новую группу ресурсов или подписку.Moving a resource only moves it to a new resource group or subscription. Расположение ресурса не изменяется.It doesn't change the location of the resource.

Рекомендации перед перемещением ресурсовChecklist before moving resources

Вот некоторые важные особенности, которые следует учитывать перед перемещением ресурса.There are some important steps to do before moving a resource. Проверив эти условия, можно избежать ошибок.By verifying these conditions, you can avoid errors.

  1. Ресурсы, которые требуется переместить, должны поддерживать операцию перемещения.The resources you want to move must support the move operation. Список ресурсов, которые поддерживают перемещение, см. в разделе Поддержка операций перемещения для ресурсов.For a list of which resources support move, see Move operation support for resources.

  2. При перемещении ресурсов некоторые службы имеют определенные ограничения или требования.Some services have specific limitations or requirements when moving resources. Если вы перемещаете одну из следующих служб, проверьте это руководство перед перемещением.If you've moving any of the following services, check that guidance before moving.

    Если целевая группа ресурсов содержит виртуальную сеть, состояние ее зависимых ресурсов может блокировать перемещение, даже если эти ресурсы не участвуют в перемещении.If the destination resource group contains a virtual network, the state of its dependent resources can block the move, even when those resources aren't involved in the move. Дополнительные сведения см. в статье Перемещение по сети.For more information, see Networking move guidance.

  3. Исходная и целевая подписки должны быть активными.The source and destination subscriptions must be active. Если у вас возникла проблема при включении учетной записи, которая была отключена, создайте запрос на поддержку Azure.If you have trouble enabling an account that has been disabled, create an Azure support request. Выберите тип проблемы Управление подпиской.Select Subscription Management for the issue type.

  4. Исходная и целевая подписка должны существовать в пределах одного клиента Azure Active Directory.The source and destination subscriptions must exist within the same Azure Active Directory tenant. Используя Azure PowerShell или командную строку Azure, можно убедиться, что обе подписки имеют один и тот же идентификатор клиента.To check that both subscriptions have the same tenant ID, use Azure PowerShell or Azure CLI.

    Для Azure PowerShell:For Azure PowerShell, use:

    (Get-AzSubscription -SubscriptionName <your-source-subscription>).TenantId
    (Get-AzSubscription -SubscriptionName <your-destination-subscription>).TenantId
    

    Для интерфейса командной строки Azure:For Azure CLI, use:

    az account show --subscription <your-source-subscription> --query tenantId
    az account show --subscription <your-destination-subscription> --query tenantId
    

    Если идентификаторы клиентов исходных и целевых подписок не совпадают, используйте следующие методы для выверки идентификаторов клиентов:If the tenant IDs for the source and destination subscriptions aren't the same, use the following methods to reconcile the tenant IDs:

  5. Подписка назначения должна быть зарегистрирована для перемещаемого поставщика ресурсов.The destination subscription must be registered for the resource provider of the resource being moved. В противном случае отображается сообщение о том, что подписка не зарегистрирована для типа ресурса.If not, you receive an error stating that the subscription is not registered for a resource type. Эта ошибка может возникнуть при перемещении ресурса в новую подписку, которая никогда не использовалась с этим типом ресурса.You might see this error when moving a resource to a new subscription, but that subscription has never been used with that resource type.

    Для PowerShell используйте следующие команды, чтобы получить состояние регистрации:For PowerShell, use the following commands to get the registration status:

    Set-AzContext -Subscription <destination-subscription-name-or-id>
    Get-AzResourceProvider -ListAvailable | Select-Object ProviderNamespace, RegistrationState
    

    Чтобы зарегистрировать поставщик ресурсов, воспользуйтесь командой:To register a resource provider, use:

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

    Для Azure CLI используйте следующие команды, чтобы получить состояние регистрации:For Azure CLI, use the following commands to get the registration status:

    az account set -s <destination-subscription-name-or-id>
    az provider list --query "[].{Provider:namespace, Status:registrationState}" --out table
    

    Чтобы зарегистрировать поставщик ресурсов, воспользуйтесь командой:To register a resource provider, use:

    az provider register --namespace Microsoft.Batch
    
  6. Учетная запись, используемая для перемещения ресурсов, должна предоставлять по крайней мере следующие разрешения:The account moving the resources must have at least the following permissions:

    • Microsoft.Resources/subscriptions/resourceGroups/moveResources/action для исходной группы ресурсов;Microsoft.Resources/subscriptions/resourceGroups/moveResources/action on the source resource group.
    • Microsoft.Resources/subscriptions/resourceGroups/write для целевой группы ресурсов.Microsoft.Resources/subscriptions/resourceGroups/write on the destination resource group.
  7. Прежде чем перемещать ресурсы, проверьте квоты подписки, в которую вы перемещаете ресурсы.Before moving the resources, check the subscription quotas for the subscription you're moving the resources to. Если при перемещении ресурсов квота подписки будет превышена, возможно, вам придется запросить увеличение квоты.If moving the resources means the subscription will exceed its limits, you need to review whether you can request an increase in the quota. Полный список ограничений и способы запросить увеличение квоты см. в статье Подписка Azure, границы, квоты и ограничения службы.For a list of limits and how to request an increase, see Azure subscription and service limits, quotas, and constraints.

  8. Для перемещения между подписками ресурс и его зависимые ресурсы должны находиться в одной группе ресурсов, и они должны быть перемещены вместе.For a move across subscriptions, the resource and its dependent resources must be located in the same resource group and they must be moved together. Например, виртуальная машина с управляемыми дисками потребует перемещения виртуальной машины и управляемых дисков вместе с другими зависимыми ресурсами.For example, a VM with managed disks would require the VM and the managed disks to be moved together, along with other dependent resources.

    Если вы перемещаете ресурс в новую подписку, проверьте, есть ли у ресурса зависимые ресурсы, и находятся ли они в той же группе ресурсов.If you're moving a resource to a new subscription, check to see whether the resource has any dependent resources, and whether they're located in the same resource group. Если ресурсы находятся не в одной группе ресурсов, проверьте, можно ли консолидировать ресурсы в одну группу ресурсов.If the resources aren't in the same resource group, check to see whether the resources can be consolidated into the same resource group. Если это так, перенесите все эти ресурсы в одну группу ресурсов, используя операцию перемещения в группах ресурсов.If so, bring all these resources into the same resource group by using a move operation across resource groups.

    Дополнительные сведения см. в разделе сценарий перемещения по подпискам.For more information, see Scenario for move across subscriptions.

Сценарий для перемещения между подпискамиScenario for move across subscriptions

Перемещение ресурсов из одной подписки в другую состоит из трех этапов:Moving resources from one subscription to another is a three-step process:

сценарий перемещения между подписками

В целях наглядности у нас есть только один зависимый ресурс.For illustration purposes, we have only one dependent resource.

  • Шаг 1. Если зависимые ресурсы распределяются по разным группам ресурсов, сначала переместите их в одну группу ресурсов.Step 1: If dependent resources are distributed across different resource groups, first move them into one resource group.
  • Шаг 2. Переместите ресурс и зависимые ресурсы вместе из исходной подписки в целевую.Step 2: Move the resource and dependent resources together from the source subscription to the target subscription.
  • Шаг 3. При необходимости Перераспределите зависимые ресурсы в разные группы ресурсов в целевой подписке.Step 3: Optionally, redistribute the dependent resources to different resource groups within the target subscription.

Проверка перемещенияValidate move

Операция проверки перемещения позволяет проверить сценарий перемещения без фактического перемещения ресурсов.The validate move operation lets you test your move scenario without actually moving the resources. Используйте эту операцию, чтобы проверить, будет ли перемещение завершено.Use this operation to check if the move will succeed. Проверка вызывается автоматически при отправке запроса на перемещение.Validation is automatically called when you send a move request. Используйте эту операцию только в том случае, если необходимо предварительно определить результаты.Use this operation only when you need to predetermine the results. Для запуска этой операции вам необходимо:To run this operation, you need the:

  • имя исходной группы ресурсов;name of the source resource group
  • идентификатор ресурса целевой группы ресурсов;resource ID of the target resource group
  • идентификатор каждого перемещаемого ресурса;resource ID of each resource to move
  • маркер доступа для вашей учетной записи.the access token for your account

Отправьте следующий запрос:Send the following request:

POST https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<source-group>/validateMoveResources?api-version=2019-05-10
Authorization: Bearer <access-token>
Content-type: application/json

С текстом запроса:With a request body:

{
 "resources": ["<resource-id-1>", "<resource-id-2>"],
 "targetResourceGroup": "/subscriptions/<subscription-id>/resourceGroups/<target-group>"
}

Если запрос имеет правильный формат, операция возвращает следующее:If the request is formatted correctly, the operation returns:

Response Code: 202
cache-control: no-cache
pragma: no-cache
expires: -1
location: https://management.azure.com/subscriptions/<subscription-id>/operationresults/<operation-id>?api-version=2018-02-01
retry-after: 15
...

Код состояния 202 указывает, что запрос на проверку был принят, но еще не определено, завершится ли операция перемещения успешно.The 202 status code indicates the validation request was accepted, but it hasn't yet determined if the move operation will succeed. Значение location содержит URL-адрес, который используется для проверки состояния продолжительной операции.The location value contains a URL that you use to check the status of the long-running operation.

Чтобы проверить состояние, отправьте следующий запрос:To check the status, send the following request:

GET <location-url>
Authorization: Bearer <access-token>

Пока операция все еще выполняется, вы по-прежнему получаете код состояния 202.While the operation is still running, you continue to receive the 202 status code. Подождите в течение времени, указанного в значении retry-after, прежде чем повторять попытку.Wait the number of seconds indicated in the retry-after value before trying again. Если проверка операции перемещения завершена успешно, вы получите код состояния 204.If the move operation validates successfully, you receive the 204 status code. Если проверка перемещения закончилась ошибкой, вы получите сообщение об ошибке, например:If the move validation fails, you receive an error message, such as:

{"error":{"code":"ResourceMoveProviderValidationFailed","message":"<message>"...}}

Использование порталаUse the portal

Чтобы переместить ресурсы, выберите группу ресурсов, в которой они содержатся, а затем нажмите кнопку Переместить.To move resources, select the resource group with those resources, and then select the Move button.

перемещение ресурсов

Укажите, куда будут перемещены ресурсы: в новую группу ресурсов или новую подписку.Select whether you're moving the resources to a new resource group or a new subscription.

Выберите ресурсы, которые необходимо переместить, и целевую группу ресурсов.Select the resources to move and the destination resource group. Подтвердите обновление сценариев для этих ресурсов и нажмите кнопку ОК.Acknowledge that you need to update scripts for these resources and select OK. Если на предыдущем шаге был выбран значок редактирования подписки, то также необходимо выбрать целевую подписку.If you selected the edit subscription icon in the previous step, you must also select the destination subscription.

выбор места назначения

В области уведомленийвы увидите, что операция перемещения выполняется.In Notifications, you see that the move operation is running.

отображение состояния перемещения

После ее завершения отобразится уведомление о результате.When it has completed, you're notified of the result.

отображение результата перемещения

Если возникает ошибка, см. статью Устранение неполадок при перемещении ресурсов Azure в новую группу ресурсов или подписку.If you get an error, see Troubleshoot moving Azure resources to new resource group or subscription.

Использование Azure PowerShellUse Azure PowerShell

Чтобы переместить существующие ресурсы в другую группу ресурсов или подписку, используйте команду Move-AzResource.To move existing resources to another resource group or subscription, use the Move-AzResource command. В следующем примере показано, как переместить несколько ресурсов в новую группу ресурсов.The following example shows how to move several resources to a new resource group.

$webapp = Get-AzResource -ResourceGroupName OldRG -ResourceName ExampleSite
$plan = Get-AzResource -ResourceGroupName OldRG -ResourceName ExamplePlan
Move-AzResource -DestinationResourceGroupName NewRG -ResourceId $webapp.ResourceId, $plan.ResourceId

Чтобы переместить ресурс в новую подписку, добавьте значение параметра DestinationSubscriptionId.To move to a new subscription, include a value for the DestinationSubscriptionId parameter.

Если возникает ошибка, см. статью Устранение неполадок при перемещении ресурсов Azure в новую группу ресурсов или подписку.If you get an error, see Troubleshoot moving Azure resources to new resource group or subscription.

Использование Azure CLIUse Azure CLI

Чтобы переместить существующие ресурсы в другую группу или подписку, используйте команду az resource move.To move existing resources to another resource group or subscription, use the az resource move command. Укажите идентификаторы перемещаемых ресурсов.Provide the resource IDs of the resources to move. В следующем примере показано, как переместить несколько ресурсов в новую группу ресурсов.The following example shows how to move several resources to a new resource group. В параметре --ids укажите перемещаемый список идентификаторов ресурсов с разделителями-пробелами.In the --ids parameter, provide a space-separated list of the resource IDs to move.

webapp=$(az resource show -g OldRG -n ExampleSite --resource-type "Microsoft.Web/sites" --query id --output tsv)
plan=$(az resource show -g OldRG -n ExamplePlan --resource-type "Microsoft.Web/serverfarms" --query id --output tsv)
az resource move --destination-group newgroup --ids $webapp $plan

Для перемещения в новую подписку нужно указать параметр --destination-subscription-id.To move to a new subscription, provide the --destination-subscription-id parameter.

Если возникает ошибка, см. статью Устранение неполадок при перемещении ресурсов Azure в новую группу ресурсов или подписку.If you get an error, see Troubleshoot moving Azure resources to new resource group or subscription.

Использование REST APIUse REST API

Чтобы переместить существующие ресурсы в другую группу ресурсов или подписку, используйте операцию Перемещение ресурсов .To move existing resources to another resource group or subscription, use the Move resources operation.

POST https://management.azure.com/subscriptions/{source-subscription-id}/resourcegroups/{source-resource-group-name}/moveResources?api-version={api-version}

В тексте запроса укажите целевую группу ресурсов и ресурсы для перемещения.In the request body, you specify the target resource group and the resources to move.

{
 "resources": ["<resource-id-1>", "<resource-id-2>"],
 "targetResourceGroup": "/subscriptions/<subscription-id>/resourceGroups/<target-group>"
}

Если возникает ошибка, см. статью Устранение неполадок при перемещении ресурсов Azure в новую группу ресурсов или подписку.If you get an error, see Troubleshoot moving Azure resources to new resource group or subscription.

Следующие шагиNext steps

Список ресурсов, которые поддерживают перемещение, см. в разделе Поддержка операций перемещения для ресурсов.For a list of which resources support move, see Move operation support for resources.