リソースを新しいリソース グループまたはサブスクリプションに移動する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 portal、Azure PowerShell、Azure CLI、または 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. リソースが停止されるわけではありません。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. ロックは最大 4 時間継続できますが、ほとんどの移動は、はるかに短い時間で完了します。The lock can last for a maximum of four hours, but most moves complete in much less time.

リソースを移動しても、新しいリソース グループまたはサブスクリプションに移動されるだけです。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. 移動をサポートしているリソースのリストは、「Move operation support for resources」(リソースの移動操作のサポート) を参照してください。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're moving any of the following services, check that guidance before moving.

  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. 両方のサブスクリプションに同じテナント ID があることを確認するには、Azure PowerShell または Azure CLI を使用します。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 CLI では、次を使用します。For Azure CLI, use:

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

    移動元と移動先のサブスクリプションのテナント ID が同じでない場合、次の方法でテナント ID を調整する必要があります。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/actionMicrosoft.Resources/subscriptions/resourceGroups/moveResources/action on the source resource group.
    • ターゲット リソース グループの Microsoft.Resources/subscriptions/resourceGroups/writeMicrosoft.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. たとえば、マネージド ディスクを備えた VM では、マネージド ディスクを他の依存リソースと共に、VM と一緒に移動する必要があります。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

サブスクリプション間でリソースを移動するには、次の 3 つの手順を行います。Moving resources from one subscription to another is a three-step process:

サブスクリプション間の移動のシナリオ

説明のため、依存リソースを 1 つだけ取り上げます。For illustration purposes, we have only one dependent resource.

  • 手順 1:依存リソースが別々のリソース グループに分散されている場合は、まずそれらを 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
  • 移動先のリソース グループのリソース IDresource ID of the target resource group
  • 移動する各リソースのリソース IDresource 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. そのリソースのスクリプトを更新する必要があること確認し、 [OK] を選択します。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 PowerShell の使用Use 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 CLI の使用Use Azure CLI

既存のリソースを別のリソース グループまたはサブスクリプションに移動するには、az resource move コマンドを使用します。To move existing resources to another resource group or subscription, use the az resource move command. 移動するリソースのリソース ID を指定します。Provide the resource IDs of the resources to move. 次の例では、いくつかのリソースを新しいリソース グループに移動する方法を示します。The following example shows how to move several resources to a new resource group. --ids パラメーターには、移動するリソース ID のスペース区切りリストを指定します。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 API を使用するUse 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.

よく寄せられる質問Frequently asked questions

質問: 通常は数分で完了するのですが、リソースの移動操作が、ほぼ 1 時間行われています。何か問題がありますか。Question: My resource move operation, which usually takes a few minutes, has been running for almost an hour. Is there something wrong?

リソースの移動は、さまざまなフェーズを持つ複雑な操作です。Moving a resource is a complex operation that has different phases. 移動しようとしているリソースのリソース プロバイダー以外のものが関与している可能性があります。It can involve more than just the resource provider of the resource you're trying to move. リソース プロバイダー間の依存関係を理由に、Azure Resource Manager では操作が完了するまで時間として 4 時間が許容されています。Because of the dependencies between resource providers, Azure Resource Manager allows 4 hours for the operation to complete. この期間によって、リソース プロバイダーは一時的な問題から復旧する機会を与えられています。This time period gives resource providers a chance to recover from transient issues. 移動要求が 4 時間以内である場合、操作は完了する試みを続けるため、まだ成功する可能性があります。If your move request is within the 4-hour period, the operation keeps trying to complete and may still succeed. この期間中、移動元のリソース グループと移動先のリソース グループは一貫性の問題を回避するためにロックされます。The source and destination resource groups are locked during this time to avoid consistency issues.

質問: リソースの移動中に、リソース グループが 4 時間ロックされるのはなぜですか?Question: Why is my resource group locked for 4 hours during resource move?

4 時間のウィンドウは、リソースの移動に許容される最大時間です。The 4-hour window is the maximum time allowed for resource move. 移動中のリソースでの変更を防ぐために、リソースの移動の期間中は移動元のリソース グループと移動先のリソース グループが両方ともロックされます。To prevent modifications on the resources being moved, both the source and destination resource groups are locked for the duration of the resource move.

移動要求には 2 つのフェーズがあります。There are two phases in a move request. 最初のフェーズでは、リソースが移動されます。In the first phase, the resource is moved. 2 番目のフェーズでは、移動中のリソースに依存している他のリソース プロバイダーに通知が送信されます。In the second phase, notifications are sent to other resource providers that are dependent on the resource being moved. リソース プロバイダーがいずれかのフェーズで失敗した場合、4 時間のウィンドウ全体にわたってリソース グループをロックすることができます。A resource group can be locked for the entire 4-hour window when a resource provider fails either phase. 許容時間中、Resource Manager では失敗したステップが再試行されます。During the allowed time, Resource Manager retries the failed step.

4 時間の期間内にリソースを移動できなかった場合、Resource Manager によって両方のリソース グループのロックが解除されます。If a resource can't be moved within the 4-hour window, Resource Manager unlocks both resource groups. 正常に移動されたリソースは、移動先のリソース グループ内にあります。Resources that were successfully moved are in the destination resource group. 移動に失敗したリソースは、移動元のリソース グループに残ります。Resources that failed to move are left the source resource group.

質問: リソースの移動中に移動元のリソース グループと移動先のリソースグループがロックされると、どのような影響がありますか?Question: What are the implications of the source and destination resource groups being locked during the resource move?

このロックにより、いずれのリソース グループも削除できなくなり、いずれのリソース グループにも新しいリソースを作成できなくなり、移動に関与するリソースを削除することもできなくなります。The lock prevents you from deleting either resource group, creating a new resource in either resource group, or deleting any of the resources involved in the move.

次の図は、進行中の移動の一部であるリソース グループをユーザーが削除しようとした場合に Azure portal から返されるエラー メッセージを示しています。The following image shows an error message from the Azure portal when a user tries to delete a resource group that is part of an ongoing move.

削除を試みたときの移動エラー メッセージ

質問: "MissingMoveDependentResources" というエラー コードはどういう意味ですか?Question: What does the error code "MissingMoveDependentResources" mean?

リソースを移動する場合は、その依存リソースが、移動先のリソース グループまたはサブスクリプションに存在しているか、または移動要求に含まれている必要があります。When moving a resource, its dependent resources must either exist in the destination resource group or subscription, or be included in the move request. 依存リソースがこの要件を満たしていない場合は、MissingMoveDependentResources エラー コードが返されます。You get the MissingMoveDependentResources error code when a dependent resource doesn't meet this requirement. エラー メッセージには、移動要求に含める必要がある依存リソースに関する詳細が含まれています。The error message has details about the dependent resource that needs to be included in the move request.

たとえば、仮想マシンを移動には、3 つの異なるリソース プロバイダーと、7 つのリソースの種類を移動することが必要な場合があります。For example, moving a virtual machine could require moving seven resource types with three different resource providers. それらのリソース プロバイダーとリソースの種類を次に示します。Those resource providers and types are:

  • Microsoft.ComputeMicrosoft.Compute

    • virtualMachinesvirtualMachines
    • disksdisks
  • Microsoft.NetworkMicrosoft.Network

    • networkInterfacesnetworkInterfaces
    • publicIPAddressespublicIPAddresses
    • networkSecurityGroupsnetworkSecurityGroups
    • virtualNetworksvirtualNetworks
  • Microsoft.StorageMicrosoft.Storage

    • storageAccountsstorageAccounts

もう 1 つの一般的な例として、仮想ネットワークの移動があります。Another common example involves moving a virtual network. その仮想ネットワークに関連付けられている他のいくつかのリソースを移動することが必要になる場合があります。You may have to move several other resources associated with that virtual network. 移動要求には、パブリック IP アドレス、ルート テーブル、仮想ネットワーク ゲートウェイ、ネットワーク セキュリティ グループなどの移動が必要になる場合があります。The move request could require moving public IP addresses, route tables, virtual network gateways, network security groups, and others.

質問: Azure 内の一部のリソースを移動できないのはなぜですか?Question: Why can't I move some resources in Azure?

現時点では、Azure 内のすべてのリソースが移動するわけではありません。Currently, not all resources in Azure support move. 移動をサポートしているリソースのリストについては、「リソースの移動操作のサポート」」を参照してください。For a list of resources that support move, see Move operation support for resources.

次のステップNext steps

移動をサポートしているリソースのリストは、「Move operation support for resources」(リソースの移動操作のサポート) を参照してください。For a list of which resources support move, see Move operation support for resources.