Resources verplaatsen naar een nieuwe resourcegroep of een nieuw abonnement

In dit artikel wordt beschreven hoe u Azure-resources kunt verplaatsen 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. Dit 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. Zij kunnen nog steeds naar de databases schrijven en deze lezen. De vergrendeling kan maximaal vier uur duren, maar meestal duurt het veel minder lang.

Als voor uw overstap nieuwe afhankelijke resources moeten worden ingesteld, 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 overal 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 verplaatsingsbewerking ondersteunen. Zie De ondersteuning voor verplaatsingsbewerkingen voor resources voor een lijst met resources.

  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 het verplaatsen moet u de roltoewijzing opnieuw maken. Uiteindelijk wordt de zwevende roltoewijzing automatisch verwijderd, maar we raden u aan de roltoewijzing vóór de verplaatsing te verwijderen.

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

  4. Zowel het bron- als het doelabonnement moet actief zijn. Als u problemen hebt met het inschakelen van een account dat is uitgeschakeld, maakt u een ondersteuningsaanvraag voor Azure. Selecteer Abonnementsbeheer als het type probleem.

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

    Gebruik voor Azure PowerShell:

    (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 krijgt u een foutbericht met de mededeling dat het abonnement niet is geregistreerd voor een resourcetype. U kunt dit probleem zien bij het verplaatsen van een resource naar een nieuw abonnement, terwijl dat abonnement nooit is gebruikt met dat type resource.

    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 voor de doelresourcegroep.
  8. Voordat u de resources verplaatst, controleert u het abonnementsquotum 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 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. Voor een VIRTUELE machine met beheerde schijven moeten bijvoorbeeld de VIRTUELE machine 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 bevinden, controleert u of de resources kunnen worden gecombineerd in dezelfde resourcegroep. Als dat zo is, brengt u al deze resources naar dezelfde resourcegroep met behulp van een verplaatsingsbewerking tussen resourcegroepen.

    Zie Scenario voor verplaatsing 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:

cross-subscription move scenario

Ter illustratie hebben we slechts één afhankelijke resource.

  • Stap 1: Als afhankelijke resources worden verdeeld over verschillende resourcegroepen, verplaatst u ze eerst naar één resourcegroep.
  • Stap 2: Verplaats de resource en afhankelijke resources samen van het bronabonnement naar het doelabonnement.
  • Stap 3: U kunt de afhankelijke resources eventueel opnieuw distribueren 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, schakelt u het selectievakje boven aan de lijst in. Of u selecteert de resources afzonderlijk.

select resources

Selecteer de knop Verplaatsen.

move options

Met deze knop hebt u drie opties:

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

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

select destination resource group

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

Move validation

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.

select destination

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

view move results

Azure PowerShell gebruiken

Valideren

Als u uw verplaatsingsscenario 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 geslaagd, 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 verplaatsingsscenario 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 aanvraagtekst om dubbele aanhalingstekens te ontsnappen.

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 geslaagd, ziet u:

{} 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 de --ids parameter een door spaties gescheiden lijst op met de resource-id's die u wilt verplaatsen.

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

Als u naar een nieuw abonnement wilt gaan, geeft u de --destination-subscription-id parameter op.

REST API gebruiken

Valideren

Met de validatiebewerking kunt u uw verplaatsingsscenario testen zonder de resources daadwerkelijk te verplaatsen. Gebruik deze bewerking om te controleren of de verplaatsing slaagt. Validatie wordt automatisch aangeroepen wanneer u een verplaatsingsaanvraag 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 toegangstoken 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 aanvraagbody:

{
 "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 statuscode 202 geeft aan dat de validatieaanvraag is geaccepteerd, maar deze heeft nog niet bepaald of de verplaatsingsbewerking slaagt. 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 statuscode 202 ontvangen. Wacht het aantal seconden dat is aangegeven in de retry-after waarde voordat u het opnieuw probeert. Als de verplaatsingsbewerking is gevalideerd, ontvangt u de statuscode 204. Als de verplaatsingsvalidatie mislukt, wordt er een foutbericht weergegeven, 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 aanvraagbody geeft u de doelresourcegroep en de resources op die u wilt verplaatsen.

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

Veelgestelde vragen

Vraag: Mijn verplaatsingsbewerking voor resources, die meestal een paar minuten duurt, is bijna een uur actief. Is er iets mis?

Het verplaatsen van een resource is een complexe bewerking met verschillende fasen. Dit kan betrekking hebben op meer dan alleen de resourceprovider van de resource die u wilt verplaatsen. Vanwege de afhankelijkheden tussen resourceproviders kan Azure Resource Manager 4 uur duren 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 wordt mijn resourcegroep vier uur vergrendeld tijdens het verplaatsen van resources?

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

Er zijn twee fasen in een verplaatsingsaanvraag. 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 gedurende de hele vier uur worden vergrendeld wanneer een resourceprovider een van beide fasen mislukt. Gedurende de toegestane tijd probeert Resource Manager de mislukte stap opnieuw uit te voeren.

Als een resource niet binnen vier uur kan worden verplaatst, ontgrendelt Resource Manager beide resourcegroepen. Resources die zijn verplaatst, bevinden zich in de doelresourcegroep. Resources die niet kunnen worden verplaatst, blijven achter in de bronresourcegroep.

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

Met de vergrendeling voorkomt u dat u een resourcegroep verwijdert, een nieuwe resource maakt in de resourcegroep of een van de resources verwijdert die betrokken zijn bij de verplaatsing.

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

Move error message attempting to delete

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 foutcode MissingMoveDependentResources wanneer een afhankelijke resource niet aan deze vereiste voldoet. Het foutbericht bevat details over de afhankelijke resource die moet worden opgenomen in de verplaatsingsaanvraag.

Het verplaatsen van een virtuele machine kan bijvoorbeeld vereisen dat 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 veelvoorkomend voorbeeld is het verplaatsen van een virtueel netwerk. Mogelijk moet u verschillende andere resources verplaatsen die zijn gekoppeld aan dat virtuele netwerk. Voor de verplaatsingsaanvraag kunnen openbare IP-adressen, routetabellen, virtuele netwerkgateways, netwerkbeveiligingsgroepen en andere worden verplaatst.

Vraag: Wat betekent de foutcode RequestDisallowedByPolicy?

Resource Manager valideert uw verplaatsingsaanvraag voordat u de verplaatsing probeert uit te voeren. Deze validatie omvat het controleren van beleidsregels die zijn gedefinieerd voor de resources die betrokken zijn bij de verplaatsing. Als u bijvoorbeeld een sleutelkluis wilt verplaatsen, maar uw organisatie een beleid heeft om het maken van een sleutelkluis in de doelresourcegroep te weigeren, mislukt de validatie en wordt de verplaatsing 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 De ondersteuning voor verplaatsingsbewerkingen voor resources voor een lijst met resources die ondersteuning bieden voor verplaatsing.

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

Indien mogelijk breekt u grote verplaatsingen op in afzonderlijke verplaatsingsbewerkingen. 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 uit te schakelen.

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 verplaatsen 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 verplaatsen geblokkeerd. Als een virtuele machine die gebruikmaakt van het virtuele netwerk bijvoorbeeld is mislukt, wordt de overstap geblokkeerd. De verplaatsen 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 fout 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 De ondersteuning voor verplaatsingsbewerkingen voor resources voor een lijst met resources.