Přesunutí prostředků do nové skupiny prostředků nebo předplatného

Tento článek ukazuje, jak přesunout prostředky Azure do jiného předplatného Azure nebo jiné skupiny prostředků v rámci stejného předplatného. 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í. Tento zámek znamená, že ve skupinách prostředků nemůžete přidávat, aktualizovat ani odstraňovat prostředky. Neznamená to, že jsou prostředky zamrzlé. Pokud například přesunete logický server Azure SQL, jeho databáze a další závislé prostředky do nové skupiny prostředků nebo předplatného, u aplikací, které používají databáze, ne docházet k výpadkům. Stále mohou číst a zapisovat do databází. Zámek může trvat maximálně čtyři hodiny, ale většina přesunů se dokončí za mnohem kratší dobu.

Pokud přesunutí vyžaduje nastavení nových závislých prostředků, dojde u těchto služeb k přerušení, dokud nebudou překonfigurované.

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ěněné 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 ID prostředku použijete 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. Prostředky, které chcete přesunout, musí podporovat operaci přesunutí. Seznam prostředků, které podporují přesun, najdete v tématu Podpora operace přesunutí prostředků.

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

  3. Pokud přesunete prostředek, který má přiřazenou roli Azure přímo k prostředku (nebo podřízenému prostředku), přiřazení role se přesune a osamocí se. Po přesunutí musíte přiřazení role vytvořit znovu. Nakonec se osamocené přiřazení role odebere automaticky, ale před přesunutím doporučujeme přiřazení role odebrat.

    Informace o správě přiřazení rolí najdete v tématu Seznam přiřazení rolí Azure a Přiřazení rolí Azure.

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

  5. Zdrojová a cílová předplatná musí existovat ve stejném Azure Active Directory tenanta. Pokud chcete zkontrolovat, že obě předplatná mají stejné ID tenanta, Azure PowerShell nebo Azure CLI.

    Pro 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:

  6. Cílové předplatné musí být registrováno pro poskytovatele přesouvaného prostředku. Pokud ne, zobrazí se chyba s oznámením, ž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, ale toto předplatné se s tímto typem prostředku nikdy nepoužívá.

    V případě PowerShellu pomocí následujících příkazů získejte stav registrace:

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

    K registraci poskytovatele prostředků použijte:

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

    V případě Azure CLI pomocí následujících příkazů získejte stav registrace:

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

    K registraci poskytovatele prostředků použijte:

    az provider register --namespace Microsoft.Batch
    
  7. Účet, který prostředky přesouvá, musí mít alespoň následující oprávnění:

    • Microsoft.Resources/subscriptions/resourceGroups/moveResources/action u zdrojové skupiny prostředků.
    • Microsoft.Resources/subscriptions/resourceGroups/write v cílové skupině prostředků.
  8. Před přesunem prostředků zkontrolujte kvóty předplatného pro předplatné, do které prostředky přesouváte. Pokud přesun prostředků znamená, že předplatné překročí jeho limity, musíte zkontrolovat, jestli můžete požádat o navýšení kvóty. Seznam omezení a postup vyžádání zvýšení najdete v tématu Limity,kvóty a omezení předplatného a služeb Azure.

  9. Pro přesun mezi předplatným musí být prostředek a jeho závislé prostředky umístěné ve stejné skupině prostředků a musí se přesunout společně. Například virtuální počítač se spravovanými disky by vyžadoval přesun virtuálního počítače a spravovaných disků společně s dalšími závislými prostředky.

    Pokud přesouváte prostředek do nového předplatného, zkontrolujte, jestli prostředek obsahuje nějaké závislé prostředky a jestli se nachází ve stejné skupině prostředků. Pokud prostředky nejsou ve stejné skupině prostředků, zkontrolujte, jestli je možné je zkombinovat do stejné skupiny prostředků. Pokud ano, přenese všechny tyto prostředky do stejné skupiny prostředků pomocí operace přesunu mezi skupinami prostředků.

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

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

Přesun prostředků z jednoho předplatného do druhého je proces se třemi kroky:

scénář přesunu mezi předplatným

Pro ilustraci máme pouze jeden závislý prostředek.

  • Krok 1: Pokud jsou závislé prostředky distribuovány napříč různými skupinami prostředků, nejprve je přesuňte do jedné skupiny prostředků.
  • Krok 2: Přesuňte prostředek a závislé prostředky společně ze zdrojového předplatného do cílového předplatného.
  • Krok 3: Volitelně můžete závislé prostředky znovu distribuovat 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 prostředky jednotlivě.

výběr prostředků

Vyberte tlačítko Přesunout.

možnosti přesunutí

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

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

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

Výběr cílové skupiny prostředků

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

Ověření přesunutí

Po úspěšném dokončení 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.

vybrat cíl

Po dokončení přesunu budete upozorněni na výsledek.

Zobrazit výsledky přesunutí

Použití Azure Powershell

Ověření

Chcete-li otestovat scénář přesunutí bez skutečného přesunutí prostředků, použijte příkaz Invoke-AzResourceAction . Tento příkaz použijte pouze v případě, že je nutné předem určit výsledky. K provedení této operace potřebujete:

  • ID prostředku zdrojové skupiny prostředků
  • ID prostředku cílové skupiny prostředků
  • ID prostředku pro každý prostředek, který se má přesunout
Invoke-AzResourceAction -Action validateMoveResources `
-ResourceId "/subscriptions/{subscription-id}/resourceGroups/{source-rg}" `
-Parameters @{ 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 ověření projde, nezobrazí se žádný výstup.

Pokud se ověření nepodaří, zobrazí se chybová zpráva s popisem, 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ů.

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

Chcete-li přejít k novému předplatnému, zahrňte hodnotu DestinationSubscriptionId parametru.

Použití Azure CLI

Ověření

Chcete-li otestovat scénář přesunutí bez skutečného přesunutí prostředků, použijte příkaz AZ Resource Invoke-Action . Tento příkaz použijte pouze v případě, že je nutné předem určit výsledky. K provedení této operace potřebujete:

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

V textu žádosti 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 ověření projde, zobrazí se:

{} Finished .. 

Pokud se ověření nepodaří, zobrazí se chybová zpráva s popisem, 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 . Zadejte ID prostředků, které se mají přesunout. Následující příklad ukazuje, jak přesunout několik prostředků do nové skupiny prostředků. V --ids parametru zadejte mezerami oddělený seznam ID prostředků, který chcete přesunout.

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 k novému předplatnému, zadejte --destination-subscription-id parametr.

Použití rozhraní REST API

Ověření

Operace ověřit přesunutí vám umožní otestovat scénář přesunutí bez skutečného přesunu prostředků. Pomocí této operace zkontrolujete, zda se přesun nezdaří. Ověřování je automaticky voláno při odeslání žádosti o přesunutí. Tuto operaci použijte pouze v případě, že potřebujete předem určit výsledky. K provedení této operace potřebujete:

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

Odeslat 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 žádosti:

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

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

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 indikuje, že žádost o ověření byla přijata, ale ještě nebyla určena, pokud operace přesunutí proběhne úspěšně. locationHodnota obsahuje adresu URL, kterou použijete ke kontrole stavu dlouhotrvající operace.

Chcete-li zjistit 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 nadále dostávat stavový kód 202. Počkejte, než se počet sekund značí v retry-after hodnotě, a potom operaci opakujte. Pokud se operace přesunutí úspěšně ověří, obdržíte stavový kód 204. Pokud se ověření přesunutí nepovede, 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 žádosti 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: moje operace přesunutí prostředků, která obvykle trvá několik minut, je spuštěná skoro po celou 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ředků u prostředku, který se pokoušíte přesunout. Vzhledem k závislostem mezi poskytovateli prostředků Azure Resource Manager umožňuje dokončení operace 4 hodiny. Toto časové období dává poskytovatelům prostředků možnost obnovení z přechodných problémů. Pokud je vaše žádost o přesun v průběhu čtyř hodin, operace se bude pokoušet dokončit a může být stále úspěšná. Zdrojové a cílové skupiny prostředků jsou během této doby uzamčeny, aby nedocházelo k problémům s konzistencí.

Otázka: Proč se skupina prostředků uzamkl po dobu 4 hodin během přesunu prostředků?

Žádost o přesunutí je povolená maximálně na čtyři hodiny. Aby se zabránilo změnám přesouvaných prostředků, jsou zdrojové i cílové skupiny prostředků zamčené během přesunu prostředků.

V žádosti o přesunutí jsou dvě fáze. V první fázi se prostředek přesune. Ve druhé fázi se oznámení odesílají jiným poskytovatelům prostředků závislým na přemístění prostředku. Skupina prostředků může být uzamčena po dobu celé čtyři hodiny, když poskytovatel prostředků dojde k chybě v obou fázích. Během povoleného času se Správce prostředků opakuje neúspěšný krok.

Pokud se prostředek nedá přesunout do čtyř hodin, Správce prostředků odemkne obě skupiny prostředků. Prostředky, které se úspěšně přesunuly, se nacházejí v cílové skupině prostředků. Prostředky, které se nepodařilo přesunout, jsou ponechány 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ředku?

Zámek vám znemožní odstranit buď skupinu prostředků, vytvoření nového prostředku v obou skupinách prostředků, nebo odstranit některý z prostředků, které jsou součástí přesunutí.

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

Přesunout chybovou zprávu pokus o odstranění

Otázka: co znamená kód chyby "MissingMoveDependentResources"?

Při přesunu prostředku musí být závislé prostředky buď existovat v cílové skupině prostředků nebo předplatném, nebo být součástí žádosti o přesun. Kód chyby MissingMoveDependentResources se zobrazí, když závislý prostředek nesplňuje tento požadavek. Chybová zpráva obsahuje podrobnosti o závislém prostředku, který musí být zahrnut v žádosti o přesunutí.

Například přesun virtuálního počítače může vyžadovat přesun sedmi typů prostředků se třemi různými poskytovateli prostředků. Poskytovatelé prostředků a typy jsou:

  • Microsoft.Compute

    • virtualMachines
    • disků
  • Microsoft.Network

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

    • storageAccounts

Další běžný příklad zahrnuje 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řesunutí veřejných IP adres, směrovacích tabulek, bran virtuální sítě, skupin zabezpečení sítě a dalších.

Otázka: co znamená kód chyby "RequestDisallowedByPolicy"?

Před pokusem o přesunutí Správce prostředků ověří vaši žádost o přesun. Toto ověření zahrnuje zásady pro kontrolu definované u prostředků, které se podílejí na přesunu. Pokud se třeba pokoušíte přesunout Trezor klíčů, ale vaše organizace má zásadu odepřít vytvoření trezoru klíčů v cílové skupině prostředků, ověření se nezdaří a přesun se zablokuje. Vrácený kód chyby je RequestDisallowedByPolicy.

Další informace o zásadách najdete v tématu co je Azure Policy?.

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

V současné době se nepodporují přesun všech prostředků v Azure. Seznam prostředků, které podporují přesun, najdete v tématu o podpoře operací přesunutí pro prostředky.

Otázka: kolik prostředků se dá v rámci jedné operace přesunout?

Pokud je to možné, přerušit velké přesunuté operace do samostatných operací přesunutí. Správce prostředků okamžitě vrátí chybu, pokud je v jedné operaci více než 800 prostředků. Přechod na méně než 800 prostředků ale může selhat také vypršením časového limitu.

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

Když se zobrazí chybová zpráva s informacemi o tom, že prostředek nelze přesunout, protože není v úspěšném stavu, může se jednat o závislý prostředek, který tento přesun blokuje. Kód chyby je obvykle MoveCannotProceedWithResourcesNotInSucceededState.

Pokud zdrojová nebo cílová skupina prostředků obsahuje virtuální síť, při přesunu se zkontrolují stavy všech závislých prostředků pro virtuální síť. Tato kontrolu zahrnuje tyto prostředky přímo a 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. Pokud třeba virtuální počítač, který používá virtuální síť, selhal, přesun se zablokuje. Přesunutí je blokováno i v případě, že virtuální počítač není jedním z přesouvaných prostředků a není v jedné ze skupin prostředků pro přesunutí.

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

Další kroky

Seznam prostředků, které podporují přesun, najdete v tématu Podpora operací přesunutí pro prostředky.