Flytta resurser till en ny resursgrupp eller prenumeration
Den här artikeln visar hur du flyttar Azure-resurser till antingen en annan Azure-prenumeration eller en annan resursgrupp under samma prenumeration. Du kan använda Azure-portalen, Azure PowerShell, Azure CLI eller REST-API:et för att flytta resurser.
Både källgruppen och målgruppen är låsta under flyttåtgärden. Skriv- och borttagningsåtgärder blockeras för resursgrupperna tills flytten är klar. Det här låset innebär att du inte kan lägga till, uppdatera eller ta bort resurser i resursgrupperna. Det innebär inte att resurserna är låsta. Om du till exempel flyttar en logisk Azure SQL-server, dess databaser och andra beroende resurser till en ny resursgrupp eller prenumeration får program som använder databaserna ingen avbrottstid. De kan fortfarande läsa och skriva till databaserna. Låset kan vara i högst fyra timmar, men de flesta förflyttningar slutförs på mycket kortare tid.
Om flytten kräver att du konfigurerar nya beroende resurser får du ett avbrott i dessa tjänster tills de har konfigurerats om.
Om du flyttar en resurs flyttas den bara till en ny resursgrupp eller prenumeration. Resursens plats ändras inte.
Resurs-ID har ändrats
När du flyttar en resurs ändrar du dess resurs-ID. Standardformatet för ett resurs-ID är /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} . När du flyttar en resurs till en ny resursgrupp eller prenumeration ändrar du ett eller flera värden i sökvägen.
Om du använder resurs-ID:t var som helst måste du ändra det värdet. Om du till exempel har en anpassad instrumentpanel i portalen som refererar till ett resurs-ID måste du uppdatera det värdet. Leta efter skript eller mallar som behöver uppdateras för det nya resurs-ID:t.
Checklista för att flytta resurser
Några viktiga steg måste utföras innan en resurs flyttas. Du kan undvika fel genom att verifiera dessa villkor.
De resurser som du vill flytta måste ha stöd för flyttåtgärden. En lista över vilka resurser som har stöd för flytt finns i Stöd för flytt av resurser.
Vissa tjänster har specifika begränsningar eller krav när du flyttar resurser. Om du flyttar någon av följande tjänster bör du kontrollera den vägledningen innan du flyttar.
- Om du använder Azure Stack Hub kan du inte flytta resurser mellan grupper.
- App Services flyttvägledning
- Flyttvägledning för Azure DevOps Services
- Vägledning för flytt av klassiska distributionsmodeller – klassisk beräkning, Storage, klassiska virtuella nätverk och Cloud Services
- Vägledning för nätverksflyttning
- Flyttvägledning för Recovery Services
- Virtual Machines flyttvägledning
- Information om hur du flyttar en Azure-prenumeration till en ny hanteringsgrupp finns i Flytta prenumerationer.
Om du flyttar en resurs som har en Azure-roll som tilldelats direkt till resursen (eller en underordnad resurs), flyttas inte rolltilldelningen och blir överbliven. Efter flytten måste du skapa rolltilldelningen på nytt. Slutligen tas den överblivna rolltilldelningen bort automatiskt, men vi rekommenderar att du tar bort rolltilldelningen innan flytten.
Information om hur du hanterar rolltilldelningar finns i Lista över Azure-rolltilldelningar och Tilldela Azure-roller.
Käll- och målprenumerationer måste vara aktiva. Om du har problem med att aktivera ett konto som har inaktiverats skapar du en Azure-supportbegäran. Välj Prenumerationshantering som typ av problem.
Käll- och målprenumerationer måste finnas inom samma Azure Active Directory klientorganisation. Om du vill kontrollera att båda prenumerationerna har samma klientorganisations-ID använder Azure PowerShell eller Azure CLI.
För Azure PowerShell använder du:
(Get-AzSubscription -SubscriptionName <your-source-subscription>).TenantId (Get-AzSubscription -SubscriptionName <your-destination-subscription>).TenantIdOm du använder Azure CLI använder du:
az account show --subscription <your-source-subscription> --query tenantId az account show --subscription <your-destination-subscription> --query tenantIdOm klientorganisations-ID:erna för käll- och målprenumerationen inte är desamma använder du följande metoder för att stämma av klientorganisations-ID:n:
Målprenumerationen måste vara registrerad för resursprovidern för den resurs som flyttas. Annars får du ett felmeddelande om att prenumerationen inte har registrerats för en resurstyp. Du kan se det här felet när du flyttar en resurs till en ny prenumeration, men prenumerationen har aldrig använts med den resurstypen.
För PowerShell använder du följande kommandon för att hämta registreringsstatusen:
Set-AzContext -Subscription <destination-subscription-name-or-id> Get-AzResourceProvider -ListAvailable | Select-Object ProviderNamespace, RegistrationStateOm du vill registrera en resursprovider använder du:
Register-AzResourceProvider -ProviderNamespace Microsoft.BatchFör Azure CLI använder du följande kommandon för att hämta registreringsstatusen:
az account set -s <destination-subscription-name-or-id> az provider list --query "[].{Provider:namespace, Status:registrationState}" --out tableOm du vill registrera en resursprovider använder du:
az provider register --namespace Microsoft.BatchKontot som flyttar resurserna måste ha minst följande behörigheter:
- Microsoft.Resources/subscriptions/resourceGroups/moveResources/action i källresursgruppen.
- Microsoft.Resources/subscriptions/resourceGroups/write på målresursgruppen.
Innan du flyttar resurserna kontrollerar du prenumerationskvoterna för den prenumeration som du flyttar resurserna till. Om flytten av resurserna innebär att prenumerationen överskrider dess gränser måste du kontrollera om du kan begära en ökning av kvoten. En lista över begränsningar och hur du begär en ökning finns i Azure-prenumeration och tjänstbegränsningar, kvoter och begränsningar.
För en flytt mellan prenumerationer måste resursen och dess beroende resurser finnas i samma resursgrupp och de måste flyttas tillsammans. En virtuell dator med hanterade diskar skulle till exempel kräva att den virtuella datorn och de hanterade diskarna flyttas tillsammans, tillsammans med andra beroende resurser.
Om du flyttar en resurs till en ny prenumeration kontrollerar du om resursen har några beroende resurser och om den finns i samma resursgrupp. Om resurserna inte finns i samma resursgrupp kontrollerar du om resurserna kan kombineras till samma resursgrupp. I så fall kan du föra in alla dessa resurser i samma resursgrupp genom att använda en flyttåtgärd mellan resursgrupper.
Mer information finns i Scenario för flytt mellan prenumerationer.
Scenario för att flytta mellan prenumerationer
Att flytta resurser från en prenumeration till en annan är en trestegsprocess:

I illustrationssyfte har vi bara en beroende resurs.
- Steg 1: Om beroende resurser distribueras mellan olika resursgrupper flyttar du dem först till en resursgrupp.
- Steg 2: Flytta resursen och beroende resurser tillsammans från källprenumerationen till målprenumerationen.
- Steg 3: Om du vill kan du distribuera om de beroende resurserna till olika resursgrupper i målprenumerationen.
Använda portalen
Om du vill flytta resurser väljer du den resursgrupp som innehåller dessa resurser.
Välj de resurser som du vill flytta. Om du vill flytta alla resurser markerar du kryssrutan överst i listan. Du kan också välja resurser individuellt.
Välj knappen Flytta.
Den här knappen ger dig tre alternativ:
- Flytta till en ny resursgrupp.
- Flytta till en ny prenumeration.
- Flytta till en ny region. Information om hur du ändrar regioner finns i Flytta resurser mellan regioner (från resursgrupp).
Välj om du vill flytta resurserna till en ny resursgrupp eller en ny prenumeration.
Källresursgruppen anges automatiskt. Ange målresursgruppen. Om du flyttar till en ny prenumeration anger du även prenumerationen. Välj Nästa.
Portalen verifierar att resurserna kan flyttas. Vänta tills verifieringen är klar.
När verifieringen är klar väljer du Nästa.
Bekräfta att du behöver uppdatera verktyg och skript för dessa resurser. Börja flytta resurserna genom att välja Flytta.
När flytten är klar meddelas du om resultatet.
Använda Azure PowerShell
Verifiera
Om du vill testa ditt flyttscenario utan att faktiskt flytta resurserna använder du kommandot Invoke-AzResourceAction. Använd bara det här kommandot när du behöver fördefiniera resultatet. Om du vill köra den här åtgärden behöver du följande:
- Resurs-ID för källresursgruppen
- Resurs-ID för målresursgruppen
- Resurs-ID för varje resurs som ska flyttas
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}' }
Om valideringen har passerat visas inga utdata.
Om verifieringen misslyckas visas ett felmeddelande som beskriver varför resurserna inte kan flyttas.
Flytta
Om du vill flytta befintliga resurser till en annan resursgrupp eller prenumeration använder du kommandot Move-AzResource. I följande exempel visas hur du flyttar flera resurser till en ny resursgrupp.
$webapp = Get-AzResource -ResourceGroupName OldRG -ResourceName ExampleSite
$plan = Get-AzResource -ResourceGroupName OldRG -ResourceName ExamplePlan
Move-AzResource -DestinationResourceGroupName NewRG -ResourceId $webapp.ResourceId, $plan.ResourceId
Om du vill flytta till en ny prenumeration inkluderar du ett värde för DestinationSubscriptionId parametern .
Använda Azure CLI
Verifiera
Om du vill testa ditt flyttscenario utan att faktiskt flytta resurserna använder du kommandot az resource invoke-action. Använd bara det här kommandot när du behöver fördefiniera resultatet. Om du vill köra den här åtgärden behöver du följande:
- Resurs-ID för källresursgruppen
- Resurs-ID för målresursgruppen
- Resurs-ID för varje resurs som ska flyttas
Använd för att escape-dubbla \" citattecken i begärandetexten.
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}\" }"
Om valideringen har passerat visas följande:
{} Finished ..
Om verifieringen misslyckas visas ett felmeddelande som beskriver varför resurserna inte kan flyttas.
Flytta
Om du vill flytta befintliga resurser till en annan resursgrupp eller prenumeration använder du kommandot az resource move. Ange resurs-ID:erna för de resurser som ska flyttas. I följande exempel visas hur du flyttar flera resurser till en ny resursgrupp. I --ids parametern anger du en blankstegsavgränsad lista över de resurs-ID:er som ska flyttas.
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
Om du vill flytta till en ny prenumeration anger du --destination-subscription-id parametern .
Använda REST-API
Verifiera
Med åtgärden för att validera flytten kan du testa ditt flyttscenario utan att faktiskt flytta resurserna. Använd den här åtgärden för att kontrollera om flytten kommer att lyckas. Validering anropas automatiskt när du skickar en flyttbegäran. Använd bara den här åtgärden när du behöver fördefiniera resultatet. Om du vill köra den här åtgärden behöver du följande:
- Namnet på källresursgruppen
- Resurs-ID för målresursgruppen
- Resurs-ID för varje resurs som ska flyttas
- Åtkomsttoken för ditt konto
Skicka följande begäran:
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
Med en begärandetext:
{
"resources": ["<resource-id-1>", "<resource-id-2>"],
"targetResourceGroup": "/subscriptions/<subscription-id>/resourceGroups/<target-group>"
}
Om begäran är korrekt formaterad returnerar åtgärden:
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
...
Statuskoden för 202 anger att valideringsbegäran godkändes, men den har ännu inte fastställt om flyttåtgärden kommer att lyckas. Värdet location innehåller en URL som du använder för att kontrollera status för den långvariga åtgärden.
Skicka följande begäran för att kontrollera statusen:
GET <location-url>
Authorization: Bearer <access-token>
När åtgärden fortfarande körs fortsätter du att få statuskoden 202. Vänta det antal sekunder som anges i värdet retry-after innan du försöker igen. Om flyttåtgärden verifieras får du statuskoden 204. Om flyttverifieringen misslyckas visas ett felmeddelande, till exempel:
{"error":{"code":"ResourceMoveProviderValidationFailed","message":"<message>"...}}
Flytta
Om du vill flytta befintliga resurser till en annan resursgrupp eller prenumeration använder du åtgärden Flytta resurser.
POST https://management.azure.com/subscriptions/{source-subscription-id}/resourcegroups/{source-resource-group-name}/moveResources?api-version={api-version}
I begärandetexten anger du målresursgruppen och de resurser som ska flyttas.
{
"resources": ["<resource-id-1>", "<resource-id-2>"],
"targetResourceGroup": "/subscriptions/<subscription-id>/resourceGroups/<target-group>"
}
Vanliga frågor och svar
Fråga: Min resursflyttningsåtgärd, som vanligtvis tar några minuter, har körts i nästan en timme. Är det något fel?
Att flytta en resurs är en komplex åtgärd som har olika faser. Det kan omfatta mer än bara resursprovidern för den resurs som du försöker flytta. På grund av beroenden mellan resursproviders kan Azure Resource Manager fyra timmar innan åtgärden slutförs. Den här tidsperioden ger resursproviders möjlighet att återställa från tillfälliga problem. Om din flyttbegäran inträder inom fyra timmar fortsätter åtgärden att försöka slutföras och kan fortfarande lyckas. Käll- och målresursgrupperna är låsta under den här tiden för att undvika konsekvensproblem.
Fråga: Varför är min resursgrupp låst i fyra timmar under resursflyttning?
En flyttbegäran får högst fyra timmar att slutföra. För att förhindra ändringar av de resurser som flyttas låses både käll- och målresursgrupperna under resursflytet.
Det finns två faser i en flyttbegäran. I den första fasen flyttas resursen. I den andra fasen skickas meddelanden till andra resursproviders som är beroende av resursen som flyttas. En resursgrupp kan låsas under hela fyra timmarna när en resursprovider misslyckas i någon av faserna. Under den tillåtna tiden Resource Manager det misslyckade steget.
Om en resurs inte kan flyttas inom fyra timmar, Resource Manager båda resursgrupperna. Resurser som har flyttats finns i målresursgruppen. Resurser som inte kunde flyttas lämnas kvar i källresursgruppen.
Fråga: Vad är konsekvenserna av att käll- och målresursgrupperna låses under resursflyttningen?
Låset hindrar dig från att ta bort antingen resursgruppen, skapa en ny resurs i antingen resursgruppen eller ta bort någon av de resurser som är inblandade i flytten.
I följande bild visas ett felmeddelande från Azure Portal när en användare försöker ta bort en resursgrupp som är en del av en pågående flytt.

Fråga: Vad betyder felkoden "MissingMoveDependentResources"?
När du flyttar en resurs måste dess beroende resurser antingen finnas i målresursgruppen, i prenumerationen eller ingå i flyttbegäran. Du får felkoden MissingMoveDependentResources när en beroende resurs inte uppfyller det här kravet. Felmeddelandet innehåller information om den beroende resurs som måste ingå i flyttbegäran.
Om du till exempel flyttar en virtuell dator kan det krävas att sju resurstyper flyttas med tre olika resursproviders. Dessa resursproviders och resurstyper är:
Microsoft.Compute
- virtualMachines
- Diskar
Microsoft.Network
- networkInterfaces
- publicIPAddresses
- networkSecurityGroups
- virtualNetworks
Microsoft.Storage
- storageAccounts
Ett annat vanligt exempel är att flytta ett virtuellt nätverk. Du kan behöva flytta flera andra resurser som är associerade med det virtuella nätverket. Flyttbegäran kan kräva flytt av offentliga IP-adresser, vägtabeller, virtuella nätverksgatewayer, nätverkssäkerhetsgrupper med mera.
Fråga: Vad betyder felkoden "RequestDisallowedByPolicy"?
Resource Manager verifierar din flyttbegäran innan du försöker flytta. Verifieringen omfattar kontrollprinciper som definierats för de resurser som är inblandade i flytten. Om du till exempel försöker flytta ett nyckelvalv men din organisation har en princip för att neka skapandet av ett nyckelvalv i målresursgruppen misslyckas valideringen och flytten blockeras. Den returnerade felkoden är RequestDisallowedByPolicy.
Mer information om principer finns i Vad är Azure Policy?.
Fråga: Varför kan jag inte flytta vissa resurser i Azure?
För närvarande är det inte alla resurser i Azure som har stöd för flytt. En lista över resurser som stöder flytt finns i Stöd för flytt av resurser.
Fråga: Hur många resurser kan jag flytta i en enda åtgärd?
När det är möjligt kan du dela upp stora förflyttningar i separata flyttåtgärder. Resource Manager returnerar omedelbart ett fel när det finns fler än 800 resurser i en enda åtgärd. Men om du flyttar mindre än 800 resurser kan det också misslyckas genom att en tidsinställning går ut.
Fråga: Vad innebär felet att en resurs inte är i tillståndet lyckades?
När du får ett felmeddelande som anger att en resurs inte kan flyttas eftersom den inte är i tillståndet lyckades, kan det faktiskt vara en beroende resurs som blockerar flytten. Felkoden är vanligtvis MoveCannotProceedWithResourcesNotInSucceededState.
Om käll- eller målresursgruppen innehåller ett virtuellt nätverk kontrolleras tillstånden för alla beroende resurser för det virtuella nätverket under flytten. Kontrollen omfattar dessa resurser direkt och indirekt beroende av det virtuella nätverket. Om någon av dessa resurser är i ett misslyckat tillstånd blockeras flytten. Om till exempel en virtuell dator som använder det virtuella nätverket har misslyckats blockeras flytten. Flytten blockeras även om den virtuella datorn inte är en av resurserna som flyttas och inte finns i någon av resursgrupperna för flytten.
När du får det här felet har du två alternativ. Flytta antingen dina resurser till en resursgrupp som inte har något virtuellt nätverk eller kontakta supporten.
Nästa steg
En lista över vilka resurser som har stöd för flytt finns i Stöd för flytt av resurser.