Azure リソース グループ間でリソースを移動する手順を特定する
このユニットでは、実行する必要のある手順と、リソース グループ間でリソースを移動するために使用できるツールについて説明します。
リソースの移動について
移動操作を開始すると、リソースを保持しているリソース グループと新しい移動先のリソース グループがロックされます。 移動操作が終了するまで、リソース グループで書き込み操作と削除操作を実行することはできません。 リソースは影響を受けませんが、これらのリソース グループ内でリソースを追加、削除、更新することはできません。
リソースを移動しても、場所は変更されません。 たとえば、米国東部リージョンにあるストレージ アカウントを別のリソース グループに移動した場合、米国東部リージョンの場所が保持されます。
サブスクリプション間でリソースを移動する
リソースの種類によっては、サブスクリプション間で、または同じサブスクリプション内のリソース グループ間でリソースを移動することができます。
このシナリオでは、同じサブスクリプション内の別のリソース グループにストレージ アカウントのペアを移動するだけですみます。 課金の理由により、Azure Web アプリとその依存リソースをすべて別のサブスクリプションに移動する必要がある場合は、そのプロセスによってステップがさらに追加される可能性があります。 ユニット 2 で説明したように、すべての依存リソースを 1 つのリソース グループ内に移動する必要があります。 その後、これらのリソースを別のサブスクリプションの新しいリソース グループ内に移動できます。 次の図は、実行が必要になる可能性がある手順を示しています。 この例では、別のリソース グループ内にリソースがあり、その依存リソースも 1 つあります。
- 依存リソースをリソースのあるリソース グループ内に移動します。
- リソースと依存リソースを、ソース サブスクリプションからターゲット サブスクリプションに一緒に移動します。
- 必要に応じて、ターゲット サブスクリプション内の別のリソース グループに依存リソースを再配布します。
リソースを移動する方法
移動するリソースを特定し、移動できることを確認します。 リソース グループを作成し、そのリソース グループにリソースを移動できます。
Azure portal、Azure CLI、PowerShell、または Azure REST API を使用して、リソースを移動できます。 次のユニットでは、Azure portal を使用して、ストレージ アカウントを新しいリソース グループに移動します。 そのため、このユニットでは、Azure CLI または PowerShell を使用してリソースを移動するのに使用するコマンドについて見てみましょう。
Azure CLI を使用してリソースを移動する
次のコマンドは、Azure CLI を使用してリソースを移動する方法を示しています。
リソース グループを作成します。
az group create --name <destination resource group name> --location <location name>
リソースを取得します。
yourResource=$(az resource show --resource-group <resource group name> --name <resource name> --resource-type <resource type> --query id --output tsv)
リソース ID を使用してリソースを別のリソース グループに移動します。
az resource move --destination-group <destination resource group name> --ids $yourResource
リソース グループ内のすべてのリソースを返して、リソースが移動されたことを確認します。
az resource list --resource-group <destination resource group name> --query [].type --output tsv | uniq
リソースを参照するツールとスクリプトのリソース ID を更新します。
Azure PowerShell を使用してリソースを移動する
次のコマンドは、Azure PowerShell を使用してリソースを移動する方法を示しています。
リソース グループを作成します。
New-AzResourceGroup -Name <destination resource group name> -Location <location name>
リソースを取得します。
$yourResource = Get-AzResource -ResourceGroupName <resource group name> -ResourceName <resource name>
リソース ID を使用してリソースを別のリソース グループに移動します。
Move-AzResource -DestinationResourceGroupName <destination resource group name> -ResourceId $yourResource.ResourceId
リソース グループ内のすべてのリソースを返して、リソースが移動されたことを確認します。
Get-AzResource -ResourceGroupName <destination resource group name> | ft
リソースを参照するツールとスクリプトのリソース ID を更新します。