Přesun prostředků Azure do nové skupiny prostředků nebo předplatného

V tomto článku se dozvíte, jak přesunout prostředky Azure do jiného předplatného Azure nebo jiné skupiny prostředků ve stejném předplatném. K přesunu prostředků můžete použít Azure portal, Azure PowerShell, Azure CLI, nebo rozhraní REST API.

Během operace přesunu dojde k uzamčení zdrojové i cílové skupiny. Dokud se přesun nedokončí, zablokují se u skupin prostředků operace zápisu a odstranění. Zámek znamená, že do skupin prostředků nemůžete přidávat prostředky, nemůžete je aktualizovat ani odstraňovat. Ale neznamená to, že prostředky jsou zablokované. Pokud například přesunete logický server Azure SQL s jeho databázemi a dalšími závislými prostředky do nové skupiny prostředků nebo do nového předplatného, nedojde v aplikacích, které tyto databáze používají, k žádným výpadkům. Aplikace stále můžou databáze číst i do nich zapisovat. Tento zámek může trvat maximálně čtyři hodiny, i když většina přesunů trvá mnohem kratší dobu.

Pokud přesun vyžaduje nastavení nových závislých prostředků, budou tyto služby přerušeny, dokud je znovu nenakonfigurujete.

Přesunutím prostředku dojde pouze k jeho přesunu do nové skupiny prostředků nebo do nového předplatného. Umístění prostředku se nezmění.

Změna ID prostředku

Když přesunete prostředek, změníte jeho ID prostředku. Standardní formát ID prostředku je /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. Když přesunete prostředek do nové skupiny prostředků nebo předplatného, změníte v této cestě jednu nebo více hodnot.

Pokud použijete ID prostředku kdekoli, budete muset tuto hodnotu změnit. Pokud máte například na portálu vlastní řídicí panel , který odkazuje na ID prostředku, budete muset tuto hodnotu aktualizovat. Vyhledejte všechny skripty nebo šablony, které je potřeba aktualizovat pro nové ID prostředku.

Kontrolní seznam před přesunutím prostředků

Před přesunem prostředků je potřeba provést několik důležitých kroků. Ověřením těchto podmínek se můžete vyhnout chybám.

  1. Zdrojové i cílové předplatné musí být aktivní. Pokud máte potíže s povolením zakázaného účtu, vytvořte žádost o podporu Azure. Jako typ problému vyberte Správa předplatného.

  2. Zdrojová a cílová předplatná musí existovat ve stejném tenantovi Microsoft Entra. Pokud chcete zkontrolovat, že v obou předplatných je stejné ID tenanta, použijte Azure PowerShell nebo Azure CLI.

    Pokud používáte Azure PowerShell, použijte:

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

    Pokud používáte Azure CLI, použijte:

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

    Pokud se ID tenantů pro zdrojové a cílové odběry neshodují, použijte k odsouhlasení ID tenantů následující metody:

  3. Pokud se pokoušíte přesunout prostředky do partnera CSP (Cloud Solution Provider), přečtěte si téma Přenos předplatných Azure mezi předplatiteli a poskytovateli CSP.

  4. Přesouvané prostředky musí tuto operaci podporovat. Seznamprostředkůch

  5. Některé služby mají při přesouvání prostředků specifická omezení nebo požadavky. Pokud přesouváte některou z následujících služeb, projděte si před přesunem tyto pokyny.

  6. Cílové předplatné musí být registrováno pro poskytovatele přesouvaného prostředku. Pokud ne, zobrazí se chyba oznamující, že předplatné není zaregistrované pro typ prostředku. Tato chyba se může zobrazit při přesunu prostředku do nového předplatného, i když toto předplatné nebylo s tímto typem prostředků nikdy použito.

    V PowerShellu použijte k získání informací o stavu registrace následující příkazy:

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

    Pokud chcete zaregistrovat poskytovatele prostředků, použijte:

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

    V Azure CLI použijte k získání informací o stavu registrace následující příkazy:

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

    Pokud chcete zaregistrovat poskytovatele prostředků, použijte:

    az provider register --namespace Microsoft.Batch
    
  7. Před přesunem prostředků zkontrolujte kvóty předplatného, do kterého prostředky přesouváte. Pokud přesunem prostředků dojde k překročení limitů předplatného, potřebujete zkontrolovat, jestli můžete požádat o zvýšení kvóty. Seznam limitů a pokyny k žádosti o zvýšení najdete v tématu Limity, kvóty a omezení předplatného a služeb Azure.

  8. Účet, který prostředky přesouvá, musí mít aspoň následující oprávnění:

    • Microsoft.Resources/subscriptions/resourceGroups/moveResources/action ke zdrojové skupině prostředků.
    • Microsoft.Resources/subscriptions/resourceGroups/write k cílové skupině prostředků.
  9. Pokud přesunete prostředek, ke kterému je přímo přiřazena role Azure (nebo je přiřazena k podřízenému prostředku), přiřazená role se nepřesune a zůstane osamocena. Po přesunu je potřeba přiřazení role vytvořit znovu. Nakonec bude osamocená přiřazená role odebrána automaticky. Přesto doporučujeme odebrat přiřazenou roli ještě před přesunem.

    Informace o správě přiřazení rolí najdete v článku Výpis přiřazení rolí Azure a Přiřazení rolí Azure.

  10. Pokud chcete přesouvat prostředky mezi předplatnými, musí se zdroj, včetně svých závislých zdrojů, nacházet ve stejné skupině prostředků. Zdroje je také potřeba přesouvat společně. Třeba v případě virtuálního počítače (VM) se spravovanými disky je potřeba převést virtuální počítač i se spravovanými disky společně s dalšími závislými prostředky.

    Pokud přesouváte prostředek do nového předplatného, podívejte se, jestli má prostředek nějaké závislé prostředky a zjistěte, jestli se nacházejí ve stejné skupině prostředků. Pokud prostředky nejsou ve stejné skupině, zkontrolujte, jestli je můžete zkombinovat do stejné skupiny prostředků. Pokud ano, přeneste všechny prostředky do stejné skupiny přesunem mezi skupinami prostředků.

    Další informace najdete v tématu Scénář přechodu mezi předplatnými.

Scénář pro přesun mezi předplatnými

Přesun prostředků z jednoho předplatného do druhého spočívá ve třech krocích:

Diagram that shows the three-step process of moving resources across subscriptions.

Pro ilustraci uvažujeme jen jeden závislý prostředek.

  • Krok 1: Pokud jsou závislé prostředky distribuovány mezi různé skupiny prostředků, nejprve je přesuňte do jedné skupiny prostředků.
  • Krok 2: Přesun prostředku a závislých prostředků ze zdrojového předplatného do cílového předplatného
  • Krok 3: Volitelně redistribuujte závislé prostředky do různých skupin prostředků v rámci cílového předplatného.

Použití portálu

Pokud chcete přesunout prostředky, vyberte skupinu prostředků, která tyto prostředky obsahuje.

Vyberte prostředky, které chcete přesunout. Pokud chcete přesunout všechny prostředky, zaškrtněte políčko v horní části seznamu. Nebo vyberte jednotlivé prostředky.

Screenshot of the Azure portal showing the selection of resources to move.

Vyberte tlačítko Přesunout.

Screenshot of the Azure portal displaying the Move button with three options.

Tlačítko nabízí tři možnosti:

Vyberte, jestli prostředky přesouváte do nové skupiny prostředků nebo do nového předplatného.

Zdrojová skupina prostředků se nastaví automaticky. Zadejte cílovou skupinu prostředků. Pokud přesouváte prostředky do nového předplatného, zadejte ho. Vyberte Další.

Screenshot of the Azure portal where the user specifies the destination resource group for the move operation.

Portál ověří, jestli je možné prostředky přesunout. Počkejte na ověření.

Screenshot of the Azure portal showing the validation process for the move operation.

Jakmile proběhne ověření, vyberte Další.

Potvrďte, že pro tyto prostředky potřebujete aktualizovat nástroje a skripty. Pokud chcete začít přesouvat prostředky, vyberte Přesunout.

Screenshot of the Azure portal where the user acknowledges the need to update tools and scripts before starting the move operation.

Jakmile je přesun hotov, bude vám oznámen výsledek.

Screenshot of the Azure portal displaying a notification with the results of the move operation.

Použití Azure Powershell

Ověřit

Pokud chcete otestovat scénář přesunutí bez skutečného přesunu prostředků, použijte příkaz Invoke-AzResourceAction . Tento příkaz použijte pouze v případě, že potřebujete předem určit výsledky.

$sourceName = "sourceRG"
$destinationName = "destinationRG"
$resourcesToMove = @("app1", "app2")

$sourceResourceGroup = Get-AzResourceGroup -Name $sourceName
$destinationResourceGroup = Get-AzResourceGroup -Name $destinationName

$resources = Get-AzResource -ResourceGroupName $sourceName | Where-Object { $_.Name -in $resourcesToMove }

Invoke-AzResourceAction -Action validateMoveResources `
   -ResourceId $sourceResourceGroup.ResourceId `
   -Parameters @{
      resources = $resources.ResourceId;  # Wrap in an @() array if providing a single resource ID string.
      targetResourceGroup = $destinationResourceGroup.ResourceId
   }

Pokud ověření projde, nezobrazí se žádný výstup.

Pokud ověření není úspěšné, zobrazí se chybová zpráva popisující, proč se prostředky nedají přesunout.

Přesunout

Pokud chcete přesunout existující prostředky do jiné skupiny prostředků nebo předplatného, použijte příkaz Move-AzResource . Následující příklad ukazuje, jak přesunout několik prostředků do nové skupiny prostředků.

$sourceName = "sourceRG"
$destinationName = "destinationRG"
$resourcesToMove = @("app1", "app2")

$resources = Get-AzResource -ResourceGroupName $sourceName | Where-Object { $_.Name -in $resourcesToMove }

Move-AzResource -DestinationResourceGroupName $destinationName -ResourceId $resources.ResourceId

Pokud chcete přejít na nové předplatné, zadejte hodnotu parametru DestinationSubscriptionId .

Použití Azure CLI

Ověřit

Pokud chcete otestovat scénář přesunutí bez skutečného přesunu prostředků, použijte příkaz az resource invoke-action . Tento příkaz použijte pouze v případě, že potřebujete předem určit výsledky. Ke spuštění této operace potřebujete:

  • ID prostředku zdrojové skupiny prostředků
  • ID prostředku cílové skupiny prostředků
  • ID prostředku každého prostředku, který se má přesunout

V textu požadavku použijte \" k úniku dvojitých uvozovek.

az resource invoke-action --action validateMoveResources \
  --ids "/subscriptions/{subscription-id}/resourceGroups/{source-rg}" \
  --request-body "{  \"resources\": [\"/subscriptions/{subscription-id}/resourceGroups/{source-rg}/providers/{resource-provider}/{resource-type}/{resource-name}\", \"/subscriptions/{subscription-id}/resourceGroups/{source-rg}/providers/{resource-provider}/{resource-type}/{resource-name}\", \"/subscriptions/{subscription-id}/resourceGroups/{source-rg}/providers/{resource-provider}/{resource-type}/{resource-name}\"],\"targetResourceGroup\":\"/subscriptions/{subscription-id}/resourceGroups/{destination-rg}\" }" 

Pokud je ověření úspěšné, zobrazí se:

{} Finished .. 

Pokud ověření není úspěšné, zobrazí se chybová zpráva popisující, proč se prostředky nedají přesunout.

Přesunout

Pokud chcete přesunout existující prostředky do jiné skupiny prostředků nebo předplatného, použijte příkaz az resource move . V parametru --ids zadejte seznam ID prostředků oddělených mezerami, které se mají přesunout.

Následující příklad ukazuje, jak přesunout několik prostředků do nové skupiny prostředků. Funguje při použití Azure CLI v terminálu Bash .

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

Následující příklad ukazuje, jak spustit stejné příkazy v konzole PowerShellu.

$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

Pokud chcete přejít na nové předplatné, zadejte --destination-subscription-id parametr.

Použití Pythonu

Ověřit

Pokud chcete otestovat scénář přesunu bez skutečného přesunu prostředků, použijte metodu ResourceManagementClient.resources.begin_validate_move_resources . Tuto metodu použijte pouze v případě, že potřebujete předem určit výsledky.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

resource_client = ResourceManagementClient(credential, subscription_id)

source_name = "sourceRG"
destination_name = "destinationRG"
resources_to_move = ["app1", "app2"]

destination_resource_group = resource_client.resource_groups.get(destination_name)

resources = [
    resource for resource in resource_client.resources.list_by_resource_group(source_name)
    if resource.name in resources_to_move
]

resource_ids = [resource.id for resource in resources]

validate_move_resources_result = resource_client.resources.begin_validate_move_resources(
    source_name,
    {
        "resources": resource_ids,
        "target_resource_group": destination_resource_group.id
    }
).result()

print("Validate move resources result: {}".format(validate_move_resources_result))

Pokud ověření projde, nezobrazí se žádný výstup.

Pokud ověření není úspěšné, zobrazí se chybová zpráva popisující, proč se prostředky nedají přesunout.

Přesunout

Pokud chcete přesunout existující prostředky do jiné skupiny prostředků nebo předplatného, použijte metodu ResourceManagementClient.resources.begin_move_resources . Následující příklad ukazuje, jak přesunout několik prostředků do nové skupiny prostředků.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

resource_client = ResourceManagementClient(credential, subscription_id)

source_name = "sourceRG"
destination_name = "destinationRG"
resources_to_move = ["app1", "app2"]

destination_resource_group = resource_client.resource_groups.get(destination_name)

resources = [
    resource for resource in resource_client.resources.list_by_resource_group(source_name)
    if resource.name in resources_to_move
]

resource_ids = [resource.id for resource in resources]

resource_client.resources.begin_move_resources(
    source_name,
    {
        "resources": resource_ids,
        "target_resource_group": destination_resource_group.id
    }
)

Použití rozhraní REST API

Ověřit

Operace ověření přesunu umožňuje otestovat scénář přesunutí bez skutečného přesunu prostředků. Pomocí této operace zkontrolujte, jestli přesun proběhne úspěšně. Při odesílání žádosti o přesunutí se automaticky volá ověření. Tuto operaci použijte pouze v případě, že potřebujete předem určit výsledky. Ke spuštění této operace potřebujete:

  • Název zdrojové skupiny prostředků
  • ID prostředku cílové skupiny prostředků
  • ID prostředku každého prostředku, který se má přesunout
  • Přístupový token pro váš účet

Odešlete následující požadavek:

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

S textem požadavku:

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

Pokud je požadavek správně naformátovaný, vrátí operace:

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
...

Stavový kód 202 označuje, že žádost o ověření byla přijata, ale zatím nebyla určena, jestli operace přesunutí proběhne úspěšně. Hodnota location obsahuje adresu URL, kterou používáte ke kontrole stavu dlouhotrvající operace.

Pokud chcete zkontrolovat stav, odešlete následující požadavek:

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

I když je operace stále spuštěná, budete dál dostávat stavový kód 202. Než to zkusíte znovu, počkejte počet sekund uvedených v hodnotě retry-after . Pokud se operace přesunutí úspěšně ověří, obdržíte stavový kód 204. Pokud ověření přesunutí selže, zobrazí se chybová zpráva, například:

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

Přesunout

Pokud chcete přesunout existující prostředky do jiné skupiny prostředků nebo předplatného, použijte operaci Přesunout prostředky .

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

V textu požadavku zadáte cílovou skupinu prostředků a prostředky, které se mají přesunout.

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

Nejčastější dotazy

Otázka: Operace přesunu prostředků, která obvykle trvá několik minut, je spuštěná téměř hodinu. Je něco špatně?

Přesunutí prostředku je složitá operace, která má různé fáze. Může zahrnovat víc než jenom poskytovatele prostředku, který se pokoušíte přesunout. Kvůli závislostem mezi poskytovateli prostředků Azure Resource Manager poskytuje k provedení operace 4 hodiny. Toto časové období poskytuje poskytovatelům prostředků možnost zotavení z přechodných problémů. Pokud se vaše žádost o přesun nachází ve čtyřhodinovém období, operace se bude dál pokoušet o dokončení a může být stále úspěšná. Během této doby jsou zdrojové a cílové skupiny prostředků uzamčené, aby nedocházelo k problémům s konzistencí.

Otázka: Proč je moje skupina prostředků během přesunu prostředků uzamčená po dobu čtyř hodin?

Na provedení žádosti o přesunutí jsou povoleny maximálně čtyři hodiny. Aby se zabránilo změnám v přesouvaných prostředcích, jsou během přesunu prostředků uzamčeny zdrojové i cílové skupiny prostředků.

Žádost o přesunutí má dvě fáze. V první fázi se prostředek přesune. Ve druhé fázi se posílají oznámení jiným poskytovatelům prostředků, kteří jsou závislí na přesouvaném prostředku. Skupinu prostředků je možné zamknout na celé čtyři hodiny, když poskytovatel prostředků selže v jedné fázi. Během povolené doby Resource Manager zkouší opakovat neúspěšný krok.

Pokud se prostředek nedá přesunout do čtyř hodin, Resource Manager odemkne obě skupiny prostředků. Prostředky, které byly úspěšně přesunuty, jsou v cílové skupině prostředků. Prostředky, které se nepodařilo přesunout, zůstanou ve zdrojové skupině prostředků.

Otázka: Jaké jsou důsledky uzamčení zdrojových a cílových skupin prostředků během přesunu prostředků?

Uzamčení vám brání odstranit skupinu prostředků, vytvořit nový prostředek ve skupině prostředků nebo odstranit některý z prostředků, které jsou součástí přesunu.

Následující obrázek ukazuje chybovou zprávu z webu Azure Portal, když se uživatel pokusí odstranit skupinu prostředků, která je součástí probíhajícího přesunu.

Screenshot of the Azure portal showing an error message when trying to delete a resource group involved in an ongoing move operation.

Otázka: Co znamená kód chyby MissingMoveDependentResources?

Když přesunete prostředek, musí závislé prostředky existovat buď v cílové skupině prostředků, nebo v předplatném, nebo musí být zahrnuté v žádosti o přesunutí. Kód chyby MissingMoveDependentResources se zobrazí v případě, že závislý prostředek nesplňuje tento požadavek. Chybová zpráva obsahuje podrobnosti o závislém prostředku, který je potřeba zahrnout do žádosti o přesunutí.

Přesunutí virtuálního počítače může například vyžadovat přesunutí sedmi typů prostředků u třech různých poskytovatelů prostředků. Tito poskytovatelé a typy prostředků jsou následující:

  • Microsoft.Compute

    • virtualMachines
    • disks
  • Microsoft.Network

    • networkInterfaces
    • publicIPAddresses
    • networkSecurityGroups
    • virtualNetworks
  • Microsoft.Storage

    • storageAccounts

Dalším běžným příkladem je přesun virtuální sítě. Možná budete muset přesunout několik dalších prostředků přidružených k této virtuální síti. Žádost o přesun by mohla vyžadovat přesun veřejných IP adres, směrovacích tabulek, bran virtuální sítě, skupin zabezpečení sítě a dalších položek. Obecně platí, že brána virtuální sítě musí být vždy ve stejné skupině prostředků jako její virtuální síť, není možné ji přesunout samostatně.

Otázka: Co znamená kód chyby RequestDisallowedByPolicy?

Resource Manager před pokusem o přesun ověří vaši žádost o přesun. Toto ověření zahrnuje kontrolu zásad definovaných pro prostředky, které jsou součástí přesunu. Pokud se například pokoušíte přesunout trezor klíčů, ale vaše organizace má zásadu pro odepření vytvoření trezoru klíčů v cílové skupině prostředků, ověření nebude úspěšné a přesun se zablokuje. Vrácený kód chyby je RequestDisallowedByPolicy.

Další informace ozásadách

Otázka: Proč nemůžu přesunout některé prostředky v Azure?

V současné době ne všechny prostředky v podpora Azure přesunu. Seznam prostředků, které podporují přesun, najdete v tématu Podpora operace přesunutí pro prostředky.

Otázka: Kolik prostředků můžu přesunout v rámci jedné operace?

Pokud je to možné, rozdělte velké přesuny do samostatných operací přesunu. Resource Manager okamžitě vrátí chybu, pokud je v jedné operaci více než 800 prostředků. Ale i přesunutí méně než 800 prostředků může skončit neúspěchem kvůli časovému limitu.

Otázka: Jaký je význam chyby, že prostředek není v úspěšném stavu?

Pokud se zobrazí chybová zpráva, že prostředek nelze přesunout, protože není ve stavu Úspěšné, může se ve skutečnosti jednat o závislý prostředek, který přesun blokuje. Kód chyby je MoveCannotProceedWithResourcesNotInSucceededState.

Pokud zdrojová nebo cílová skupina prostředků obsahuje virtuální síť, kontrolují se během přesunu stavy všech závislých prostředků virtuální sítě. Kontrola zahrnuje prostředky přímo i nepřímo závislé na virtuální síti. Pokud některý z těchto prostředků je ve stavu selhání, přesun se zablokuje. Přesun se zablokuje, pokud například dojde k selhání virtuálního počítače, který využívá virtuální síť. Přesun se zablokuje i v případě, že virtuální počítač není jedním z přesouvaných prostředků a není v žádné ze skupin prostředků pro přesun.

Když se zobrazí tato chyba, máte dvě možnosti. Přesuňte prostředky do skupiny prostředků, která nemá virtuální síť, nebo se obraťte na podporu.

Další kroky

Seznamprostředkůch