Resources verplaatsen naar een nieuwe resourcegroep of een nieuw abonnement

In dit artikel wordt beschreven hoe u Azure-resources verplaatst naar een ander Azure-abonnement of een andere resourcegroep onder hetzelfde abonnement. U kunt resources verplaatsen via de Azure-portal, Azure PowerShell, Azure CLI of de REST API.

Zowel de brongroep als de doelgroep wordt tijdens het verplaatsen vergrendeld. Schrijf- en verwijderingsbewerkingen voor de resourcegroepen worden vergrendeld tot de bewerking is voltooid. Deze vergrendeling betekent dat u geen resources in de resourcegroepen kunt toevoegen, bijwerken of verwijderen. Het betekent niet dat de resources bevroren zijn. Als u bijvoorbeeld een logische Azure SQL server, de databases en andere afhankelijke resources naar een nieuwe resourcegroep of een nieuw abonnement verplaatst, is er geen downtime voor toepassingen die gebruikmaken van de databases. Ze kunnen nog steeds lezen en schrijven naar de databases. De vergrendeling kan maximaal vier uur duren, maar de meeste stappen worden in veel minder tijd voltooid.

Als voor uw overstap nieuwe afhankelijke resources moeten worden geconfigureerd, worden deze services onderbroken totdat ze opnieuw zijn geconfigureerd.

Als u een resource verplaatst, wordt deze alleen verplaatst naar een nieuwe resourcegroep of nieuw abonnement. Hierdoor wordt de locatie van de resource niet gewijzigd.

Resource-id gewijzigd

Wanneer u een resource verplaatst, wijzigt u de resource-id. De standaardindeling voor een resource-id is /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} . Wanneer u een resource naar een nieuwe resourcegroep of een nieuw abonnement verplaatst, wijzigt u een of meer waarden in dat pad.

Als u de resource-id ergens gebruikt, moet u die waarde wijzigen. Als u bijvoorbeeld een aangepast dashboard in de portal hebt dat verwijst naar een resource-id, moet u die waarde bijwerken. Zoek naar scripts of sjablonen die moeten worden bijgewerkt voor de nieuwe resource-id.

Controlelijst voordat u de resource verplaatst

Voordat u een resource verplaatst, moeten er enkele belangrijke stappen worden uitgevoerd. U kunt fouten voorkomen door te controleren of aan de volgende voorwaarden is voldaan.

  1. De resources die u wilt verplaatsen, moeten de bewerking voor verplaatsen ondersteunen. Zie Ondersteuning voor het verplaatsen van resources voor een lijst met resources die ondersteuning bieden voor verplaatsen.

  2. Sommige services hebben specifieke beperkingen of vereisten bij het verplaatsen van resources. Als u een van de volgende services verplaatst, controleert u deze richtlijnen voordat u gaat verplaatsen.

  3. Als u een resource verplaatst met een Azure-rol die rechtstreeks is toegewezen aan de resource (of een onderliggende resource), wordt de roltoewijzing niet verplaatst en wordt deze zwevend. Na de overstap moet u de roltoewijzing opnieuw maken. Uiteindelijk wordt de zwevende roltoewijzing automatisch verwijderd, maar we raden u aan de roltoewijzing vóór de verplaatsen te verwijderen.

    Zie Lijst met Azure-roltoewijzingen en Azure-rollen toewijzen voor meer informatie over het beheren van roltoewijzingen.

  4. De bron- en doelabonnementen moeten actief zijn. Als u problemen hebt met het inschakelen van een account dat is uitgeschakeld, maakt u een ondersteuning voor Azure aanvraag. Selecteer Abonnementsbeheer als het type probleem.

  5. De bron- en doelabonnementen moeten zich binnen dezelfde tenant Azure Active Directory maken. Als u wilt controleren of beide abonnementen dezelfde tenant-id hebben, gebruikt u Azure PowerShell of Azure CLI.

    Gebruik Azure PowerShell voor meer informatie:

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

    Gebruik voor Azure CLI:

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

    Als de tenant-id's voor de bron- en doelabonnementen niet hetzelfde zijn, gebruikt u de volgende methoden om de tenant-id's af te stemmen:

  6. Het doelabonnement moet zijn geregistreerd voor de resourceprovider van de resource die wordt verplaatst. Zo niet, dan ontvangt u een foutmelding waarin staat dat het abonnement niet is geregistreerd voor een resourcetype. Mogelijk ziet u deze fout bij het verplaatsen van een resource naar een nieuw abonnement, maar dat abonnement is nog nooit gebruikt met dat resourcetype.

    Gebruik voor PowerShell de volgende opdrachten om de registratiestatus op te halen:

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

    Als u een resourceprovider wilt registreren, gebruikt u:

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

    Gebruik voor Azure CLI de volgende opdrachten om de registratiestatus op te halen:

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

    Als u een resourceprovider wilt registreren, gebruikt u:

    az provider register --namespace Microsoft.Batch
    
  7. Het account dat de resources verplaatst, moet ten minste de volgende machtigingen hebben:

    • Microsoft.Resources/subscriptions/resourceGroups/moveResources/action voor de bronresourcegroep.
    • Microsoft.Resources/subscriptions/resourceGroups/write op de doelresourcegroep.
  8. Voordat u de resources verplaatst, controleert u de abonnementsquota voor het abonnement waar u de resources naar verplaatst. Als het verplaatsen van de resources betekent dat het abonnement de limieten overschrijdt, moet u controleren of u een verhoging van het quotum kunt aanvragen. Zie Azure subscription and service limits, quotas, and constraints (Limieten,quota en beperkingen voor Azure-abonnementen en -service) voor een lijst met limieten en hoe u een verhoging kunt aanvragen.

  9. Voor een overstap tussen abonnementen moeten de resource en de afhankelijke resources zich in dezelfde resourcegroep bevinden en moeten ze samen worden verplaatst. Een VM met beheerde schijven vereist bijvoorbeeld dat de VM en de beheerde schijven samen worden verplaatst, samen met andere afhankelijke resources.

    Als u een resource naar een nieuw abonnement verplaatst, controleert u of de resource afhankelijke resources heeft en of deze zich in dezelfde resourcegroep bevinden. Als de resources zich niet in dezelfde resourcegroep zitten, controleert u of de resources in dezelfde resourcegroep kunnen worden gecombineerd. Als dat het zo is, brengt u al deze resources naar dezelfde resourcegroep met behulp van een move-bewerking tussen resourcegroepen.

    Zie Scenario voor verplaatsen tussen abonnementen voor meer informatie.

Scenario voor het verplaatsen tussen abonnementen

Het verplaatsen van resources van het ene naar het andere abonnement is een proces dat uit drie stappen bestaat:

scenario voor verplaatsen tussen abonnementen

Ter illustratie hebben we slechts één afhankelijke resource.

  • Stap 1: als afhankelijke resources zijn verdeeld over verschillende resourcegroepen, verplaatst u deze eerst naar één resourcegroep.
  • Stap 2: verplaats de resource en afhankelijke resources samen van het bronabonnement naar het doelabonnement.
  • Stap 3: distribueren de afhankelijke resources desgewenst opnieuw naar verschillende resourcegroepen binnen het doelabonnement.

Gebruik de portal

Als u resources wilt verplaatsen, selecteert u de resourcegroep die deze resources bevat.

De resources selecteren die u wilt verplaatsen. Als u alle resources wilt verplaatsen, selecteert u het selectievakje bovenaan de lijst. U kunt ook resources afzonderlijk selecteren.

resources selecteren

Selecteer de knop Verplaatsen.

opties voor verplaatsen

Met deze knop hebt u drie opties:

Selecteer of u de resources verplaatst naar een nieuwe resourcegroep of een nieuw abonnement.

De bronresourcegroep wordt automatisch ingesteld. Geef de doelresourcegroep op. Als u overstapt op een nieuw abonnement, geeft u ook het abonnement op. Selecteer Next.

doelresourcegroep selecteren

De portal controleert of de resources kunnen worden verplaatst. Wacht tot de validatie is voltooid.

Validatie verplaatsen

Wanneer de validatie is voltooid, selecteert u Volgende.

Bevestig dat u hulpprogramma's en scripts voor deze resources moet bijwerken. Selecteer Verplaatsen om te beginnen met het verplaatsen van de resources.

doel selecteren

Wanneer de verplaatsen is voltooid, wordt u op de hoogte gesteld van het resultaat.

resultaten van verplaatsen weergeven

Azure PowerShell gebruiken

Valideren

Als u uw scenario voor verplaatsen wilt testen zonder de resources daadwerkelijk te verplaatsen, gebruikt u de opdracht Invoke-AzResourceAction. Gebruik deze opdracht alleen als u de resultaten vooraf moet bepalen. Als u deze bewerking wilt uitvoeren, hebt u het volgende nodig:

  • Resource-id van de bronresourcegroep
  • Resource-id van de doelresourcegroep
  • Resource-id van elke resource die moet worden verplaatst
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}' }  

Als de validatie is mislukt, ziet u geen uitvoer.

Als de validatie mislukt, ziet u een foutbericht waarin wordt beschreven waarom de resources niet kunnen worden verplaatst.

Verplaatsen

Als u bestaande resources wilt verplaatsen naar een andere resourcegroep of een ander abonnement, gebruikt u de opdracht Move-AzResource. In het volgende voorbeeld ziet u hoe u verschillende resources naar een nieuwe resourcegroep verplaatst.

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

Als u naar een nieuw abonnement wilt gaan, moet u een waarde voor de DestinationSubscriptionId parameter opnemen.

Azure CLI gebruiken

Valideren

Als u uw scenario voor verplaatsen wilt testen zonder de resources daadwerkelijk te verplaatsen, gebruikt u de opdracht az resource invoke-action. Gebruik deze opdracht alleen als u de resultaten vooraf moet bepalen. Als u deze bewerking wilt uitvoeren, hebt u het volgende nodig:

  • Resource-id van de bronresourcegroep
  • Resource-id van de doelresourcegroep
  • Resource-id van elke resource die moet worden verplaatst

Gebruik in de aanvraag body om \" dubbele aanhalingstekens te escapen.

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}\" }" 

Als de validatie is mislukt, ziet u het volgende:

{} Finished .. 

Als de validatie mislukt, ziet u een foutbericht waarin wordt beschreven waarom de resources niet kunnen worden verplaatst.

Verplaatsen

Als u bestaande resources wilt verplaatsen naar een andere resourcegroep of een ander abonnement, gebruikt u de opdracht az resource move. Geef de resource-ID's op van de resources die u wilt verplaatsen. In het volgende voorbeeld ziet u hoe u verschillende resources naar een nieuwe resourcegroep verplaatst. Geef in --ids de parameter een door spatie gescheiden lijst op van de resource-ID's die moeten worden verplaatst.

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

Geef de parameter op om over te gaan naar een nieuw --destination-subscription-id abonnement.

REST API gebruiken

Valideren

Met de bewerking verplaatsen valideren kunt u uw scenario voor verplaatsen testen zonder de resources daadwerkelijk te verplaatsen. Gebruik deze bewerking om te controleren of de overstap slaagt. Validatie wordt automatisch aangeroepen wanneer u een aanvraag voor verplaatsen verzendt. Gebruik deze bewerking alleen als u de resultaten vooraf moet bepalen. Als u deze bewerking wilt uitvoeren, hebt u het volgende nodig:

  • Naam van de bronresourcegroep
  • Resource-id van de doelresourcegroep
  • Resource-id van elke resource die moet worden verplaatst
  • Het toegangs token voor uw account

Verzend de volgende aanvraag:

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

Met een aanvraag body:

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

Als de aanvraag correct is opgemaakt, retourneert de bewerking:

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

De 202-statuscode geeft aan dat de validatieaanvraag is geaccepteerd, maar nog niet is vastgesteld of de bewerking wordt uitgevoerd. De location waarde bevat een URL die u gebruikt om de status van de langlopende bewerking te controleren.

Verzend de volgende aanvraag om de status te controleren:

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

Terwijl de bewerking nog steeds wordt uitgevoerd, blijft u de 202-statuscode ontvangen. Wacht het aantal seconden dat is aangegeven in de retry-after waarde voordat u het opnieuw probeert. Als de bewerking voor verplaatsen wordt gevalideerd, ontvangt u de statuscode 204. Als de validatie van de verplaatsen mislukt, ontvangt u een foutbericht, zoals:

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

Verplaatsen

Als u bestaande resources wilt verplaatsen naar een andere resourcegroep of een ander abonnement, gebruikt u de bewerking Resources verplaatsen.

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

In de aanvraag body geeft u de doelresourcegroep en de resources op die moeten worden verplaatst.

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

Veelgestelde vragen

Vraag: Mijn bewerking voor het verplaatsen van resources, die meestal enkele minuten duurt, is bijna een uur actief. Is er iets mis?

Het verplaatsen van een resource is een complexe bewerking met verschillende fasen. Hierbij kan meer betrokken zijn dan alleen de resourceprovider van de resource die u wilt verplaatsen. Vanwege de afhankelijkheden tussen resourceproviders duurt Azure Resource Manager vier uur voordat de bewerking is voltooid. Deze periode biedt resourceproviders de mogelijkheid om te herstellen van tijdelijke problemen. Als uw aanvraag voor verplaatsen binnen de periode van vier uur valt, blijft de bewerking proberen te voltooien en kan deze nog steeds slagen. De bron- en doelresourcegroepen zijn gedurende deze tijd vergrendeld om consistentieproblemen te voorkomen.

Vraag: Waarom is mijn resourcegroep vier uur vergrendeld tijdens het verplaatsen van resources?

Een aanvraag voor verplaatsen mag maximaal vier uur worden voltooid. Om te voorkomen dat wijzigingen in de resources worden verplaatst, worden zowel de bron- als doelresourcegroepen tijdens het verplaatsen van de resource vergrendeld.

Een aanvraag voor verplaatsen bestaat uit twee fasen. In de eerste fase wordt de resource verplaatst. In de tweede fase worden meldingen verzonden naar andere resourceproviders die afhankelijk zijn van de resource die wordt verplaatst. Een resourcegroep kan de hele vier uur worden vergrendeld wanneer een resourceprovider een van beide fasen uitvalt. Tijdens de toegestane tijd wordt Resource Manager mislukte stap opnieuw proberen uit te proberen.

Als een resource niet binnen vier uur kan worden verplaatst, Resource Manager beide resourcegroepen ontgrendeld. Resources die zijn verplaatst, staan in de doelresourcegroep. Resources die niet zijn verplaatst, verlaten de bronresourcegroep.

Vraag: Wat zijn de gevolgen van de bron- en doelresourcegroepen die tijdens het verplaatsen van de resource worden vergrendeld?

Met de vergrendeling voorkomt u dat u een resourcegroep kunt verwijderen, een nieuwe resource in een resourcegroep kunt maken of een van de resources kunt verwijderen die bij de verplaatsen betrokken zijn.

In de volgende afbeelding ziet u een foutbericht van de Azure Portal wanneer een gebruiker probeert een resourcegroep te verwijderen die deel uitmaakt van een doorlopende move.

Foutbericht verplaatsen dat wordt verwijderd

Vraag: Wat betekent de foutcode MissingMoveDependentResources?

Bij het verplaatsen van een resource moeten de afhankelijke resources aanwezig zijn in de doelresourcegroep of in het abonnement, of ze moeten worden opgenomen in de aanvraag voor het verplaatsen. U krijgt de missingMoveDependentResources-foutcode wanneer een afhankelijke resource niet aan deze vereiste voldoet. Het foutbericht bevat details over de afhankelijke resource die moet worden opgenomen in de aanvraag voor verplaatsen.

Voor het verplaatsen van een virtuele machine kunnen bijvoorbeeld zeven resourcetypen met drie verschillende resourceproviders worden verplaatst. Deze resourceproviders en -typen zijn:

  • Microsoft.Compute

    • virtualMachines
    • Schijven
  • Microsoft.Network

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

    • storageAccounts

Een ander veelvoorkomende voorbeeld is het verplaatsen van een virtueel netwerk. Mogelijk moet u verschillende andere resources verplaatsen die aan dat virtuele netwerk zijn gekoppeld. Voor de aanvraag voor verplaatsen moeten mogelijk openbare IP-adressen, routetabellen, virtuele netwerkgateways, netwerkbeveiligingsgroepen en andere worden verplaatst.

Vraag: Wat betekent de foutcode RequestDisallowedByPolicy?

Resource Manager valideert uw aanvraag voor verplaatsen voordat u de overstap probeert te maken. Deze validatie omvat het controleren van beleidsregels die zijn gedefinieerd voor de resources die bij de overstap betrokken zijn. Als u bijvoorbeeld probeert een sleutelkluis te verplaatsen, maar uw organisatie een beleid heeft om het maken van een sleutelkluis in de doelresourcegroep te weigeren, mislukt de validatie en wordt de overstap geblokkeerd. De geretourneerde foutcode is RequestDisallowedByPolicy.

Zie Wat is Azure Policy? voor meer informatie over beleidsregels.

Vraag: Waarom kan ik sommige resources niet verplaatsen in Azure?

Momenteel worden niet alle resources in ondersteuning voor Azure verplaatst. Zie Ondersteuning voor het verplaatsen van resources voor een lijst met resources die ondersteuning bieden voor verplaatsen.

Vraag: Hoeveel resources kan ik verplaatsen in één bewerking?

Indien mogelijk, kunt u grote bewerkingen in afzonderlijke verplaatsbewerkingen opbreiden. Resource Manager retourneert onmiddellijk een fout wanneer er meer dan 800 resources in één bewerking zijn. Het verplaatsen van minder dan 800 resources kan echter ook mislukken door een time-out.

Vraag: Wat is de betekenis van de fout dat een resource niet de status Geslaagd heeft?

Wanneer er een foutbericht wordt weergegeven dat aangeeft dat een resource niet kan worden verplaatst omdat deze niet de status Geslaagd heeft, kan het in werkelijkheid een afhankelijke resource zijn die de overstap blokkeert. Normaal gesproken is de foutcode MoveCannotProceedWithResourcesNotInSucceededState.

Als de bron- of doelresourcegroep een virtueel netwerk bevat, worden de staten van alle afhankelijke resources voor het virtuele netwerk gecontroleerd tijdens het verplaatsen. De controle omvat deze resources direct en indirect afhankelijk van het virtuele netwerk. Als een van deze resources de status Mislukt heeft, wordt de overstap geblokkeerd. Als een virtuele machine die gebruikmaakt van het virtuele netwerk bijvoorbeeld is mislukt, wordt de overstap geblokkeerd. De overstap wordt geblokkeerd, zelfs wanneer de virtuele machine niet een van de resources is die wordt verplaatst en zich niet in een van de resourcegroepen voor de verplaatsen.

Wanneer u deze foutmelding ontvangt, hebt u twee opties. Verplaats uw resources naar een resourcegroep die geen virtueel netwerk heeft of neem contact op met de ondersteuning.

Volgende stappen

Zie Ondersteuning voor het verplaatsen van resources voor een lijst met resources die ondersteuning bieden voor verplaatsen.