Udostępnij za pośrednictwem


Przenoszenie zasobów Azure do nowej grupy zasobów lub subskrypcji

W tym artykule pokazano, jak przenieść zasoby platformy Azure do innej subskrypcji platformy Azure lub innej grupy zasobów w ramach tej samej subskrypcji. Do przenoszenia zasobów możesz użyć witryny Azure Portal, programu Azure PowerShell, interfejsu wiersza polecenia platformy Azure lub interfejsu API REST.

Zarówno grupa źródłowa, jak i docelowa są blokowane na czas operacji przenoszenia. Operacje zapisu i usuwania na grupach zasobów są blokowane do momentu zakończenia przenoszenia. Ta blokada oznacza, że nie można dodawać, aktualizować ani usuwać zasobów w grupach zasobów. Nie oznacza to, że zasoby są zamrożone. Jeśli na przykład przenosisz do nowej grupy zasobów lub subskrypcji serwer logiczny usługi Azure SQL, jego bazy danych i inne zasoby zależne, aplikacje, które korzystają z funkcji tych baz danych, nie będą mieć przestoju. Nadal będą mogły wykonywać operacje odczytu i zapisu w tych bazach danych. Blokada może trwać maksymalnie cztery godziny, ale przeważnie przenoszenie zasobów trwa znacznie krócej.

Jeśli przeniesienie wymaga skonfigurowania nowych zasobów zależnych, wystąpi przerwa w działaniu tych usług do czasu ich ponownego skonfigurowania.

Przeniesienie zasobu powoduje jedynie przeniesienie go do nowej grupy zasobów lub subskrypcji. Operacja nie może zmienić lokalizacji zasobu.

Uwaga

Nie można przenieść zasobów platformy Azure do innej grupy zasobów lub innej subskrypcji, jeśli istnieje blokada tylko do odczytu, niezależnie od tego, czy znajduje się w źródle, czy w miejscu docelowym.

Zmieniony identyfikator zasobu

Podczas przenoszenia zasobu zmienia się jego identyfikator zasobu. Standardowy format identyfikatora zasobu to /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. Po przeniesieniu zasobu do nowej grupy zasobów lub subskrypcji należy zmienić co najmniej jedną wartość w tej ścieżce.

Jeśli używasz identyfikatora zasobu w dowolnym miejscu, musisz zmienić wartość. Jeśli na przykład masz niestandardowy pulpit nawigacyjny w portalu, który odwołuje się do identyfikatora zasobu, musisz zaktualizować ją. Poszukaj skryptów lub szablonów, które należy zaktualizować dla nowego identyfikatora zasobu.

Lista kontrolna przed przenoszeniem zasobów

Przed przeniesieniem zasobu należy wykonać kilka ważnych czynności. Dzięki sprawdzeniu tych warunków można uniknąć błędów.

  1. Subskrypcje źródłowa i docelowa muszą być aktywne. Jeśli masz problem z włączeniem wyłączonego konta, utwórz wniosek o pomoc techniczną platformy Azure. Jako typ problemu wybierz Zarządzanie subskrypcją.

  2. Subskrypcje źródłowe i docelowe muszą istnieć w tej samej dzierżawie usługi Microsoft Entra. Aby sprawdzić, czy obie subskrypcje mają ten sam identyfikator dzierżawy, użyj programu Azure PowerShell lub wiersza polecenia platformy Azure.

    W przypadku programu Azure PowerShell użyj polecenia:

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

    W przypadku interfejsu wiersza polecenia platformy Azure użyj polecenia:

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

    Jeśli identyfikatory dzierżawy dla subskrypcji źródłowej i docelowej nie są takie same, użyj następujących metod, aby uzgodnić identyfikatory dzierżaw:

  3. Jeśli próbujesz przenieść zasoby do lub z partnera Dostawca rozwiązań w chmurze (CSP), zobacz Przenoszenie subskrypcji platformy Azure między subskrybentami i dostawcami usług w chmurze.

  4. Zasoby, które chcesz przenieść, muszą obsługiwać operację przenoszenia. Aby uzyskać listę zasobów, które obsługują przenoszenie zasobów, zobacz Obsługa operacji przenoszenia dla zasobów.

  5. Niektóre usługi mają określone ograniczenia lub wymagania dotyczące przenoszenia zasobów. Jeśli przenosisz dowolną z następujących usług, przed przeniesieniem sprawdź te wskazówki.

  6. Subskrypcja docelowa musi być zarejestrowana dla dostawcy przenoszonego zasobu. Jeśli nie, zostanie wyświetlony komunikat o błędzie informujący, że subskrypcja nie jest zarejestrowana dla typu zasobu. Ten błąd może wystąpić podczas przenoszenia zasobu do nowej subskrypcji, która nigdy nie była używana z tym typem zasobu.

    W przypadku programu PowerShell użyj następujących poleceń w celu pobrania stanu rejestracji:

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

    Aby zarejestrować dostawcę zasobów, użyj:

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

    W przypadku interfejsu wiersza polecenia platformy Azure użyj następujących poleceń w celu pobrania stanu rejestracji:

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

    Aby zarejestrować dostawcę zasobów, użyj:

    az provider register --namespace Microsoft.Batch
    
  7. Przed przeniesieniem zasobów sprawdź limity przydziału dla subskrypcji, do której przenosisz zasoby. Jeśli przeniesienie zasobów oznacza, że subskrypcja przekroczy limity, musisz sprawdzić, czy możesz zażądać zwiększenia limitu przydziału. Aby uzyskać listę limitów i dowiedzieć się, jak zażądać ich zwiększenia, zobacz Limity, limity przydziału i ograniczenia subskrypcji i usług platformy Azure.

  8. Konto przenoszące zasoby musi mieć co najmniej następujące uprawnienia:

    • Microsoft.Resources/subscriptions/resourceGroups/moveResources/action w źródłowej grupie zasobów.
    • Microsoft.Resources/subscriptions/resourceGroups/write w docelowej grupie zasobów.
  9. Jeśli przeniesiesz zasób z rolą platformy Azure przypisaną bezpośrednio do tego zasobu lub zasobu podrzędnego, przypisanie roli nie zostanie przeniesione i zostanie oddzielone. Po przeniesieniu trzeba będzie ponownie utworzyć przypisanie roli. Po pewnym czasie oddzielone przypisanie roli zostanie automatycznie usunięte, ale zalecamy usunięcie przypisania roli przed przeniesieniem.

    Aby uzyskać informacje na temat zarządzania przypisaniami ról, zobacz Wyświetlanie listy przypisań ról platformy Azure i Przypisywanie ról platformy Azure.

  10. W przypadku przenoszenia między subskrypcjami zasób i jego zasoby zależne muszą znajdować się w tej samej grupie zasobów i muszą być przenoszone razem. Na przykład w przypadku maszyny wirtualnej z dyskami zarządzanymi maszyna wirtualna i dyski zarządzane muszą zostać przeniesione razem, wraz z innymi zasobami zależnymi.

    Jeśli przenosisz zasób do nowej subskrypcji, sprawdź, czy zasób ma jakiekolwiek zasoby zależne i czy znajdują się one tej samej grupie zasobów. Jeśli zasoby nie znajdują się w tej samej grupie zasobów, sprawdź, czy zasoby można połączyć w ramach tej samej grupy zasobów. Jeśli tak, przenieś wszystkie te zasoby do tej samej grupy zasobów przy użyciu operacji przenoszenia między grupami zasobów.

    Aby uzyskać więcej informacji, zobacz Scenariusz przenoszenia między subskrypcjami.

Scenariusz przenoszenia między subskrypcjami

Proces przenoszenia zasobów między subskrypcjami składa się z trzech etapów:

Diagram przedstawiający trzyetapowy proces przenoszenia zasobów między subskrypcjami.

W celach ilustracyjnych uwzględniono tylko jeden zasób zależny.

  • Krok 1. Jeśli zasoby zależne są dystrybuowane między różne grupy zasobów, najpierw przenieś je do jednej grupy zasobów.
  • Krok 2. Przeniesienie zasobu i zasobów zależnych ze źródłowej subskrypcji do subskrypcji docelowej.
  • Krok 3. Opcjonalnie redystrybuuj zasoby zależne do różnych grup zasobów w ramach subskrypcji docelowej.

Używanie portalu

Aby przenieść zasoby, wybierz grupę zasobów zawierającą te zasoby.

Wybierz zasoby, które chcesz przenieść. Aby przenieść wszystkie zasoby, zaznacz pole wyboru w górnej części listy. Możesz też wybrać zasoby pojedynczo.

Zrzut ekranu witryny Azure Portal przedstawiający wybór zasobów do przeniesienia.

Wybierz przycisk Przenieś.

Zrzut ekranu witryny Azure Portal przedstawiający przycisk Przenieś z trzema opcjami.

Ten przycisk udostępnia trzy opcje:

Wybierz, czy przenosisz zasoby do nowej grupy zasobów, czy do nowej subskrypcji.

Źródłowa grupa zasobów jest ustawiana automatycznie. Określ docelową grupę zasobów. Jeśli przenosisz zasoby do nowej subskrypcji, określ również subskrypcję. Wybierz Dalej.

Zrzut ekranu witryny Azure Portal, w którym użytkownik określa docelową grupę zasobów dla operacji przenoszenia.

Portal sprawdza, czy zasoby można przenieść. Poczekaj na zakończenie walidacji.

Zrzut ekranu witryny Azure Portal przedstawiający proces weryfikacji operacji przenoszenia.

Po pomyślnym zakończeniu walidacji wybierz pozycję Dalej.

Potwierdź, że musisz zaktualizować narzędzia i skrypty dla tych zasobów. Aby rozpocząć przenoszenie zasobów, wybierz pozycję Przenieś.

Zrzut ekranu witryny Azure Portal, na którym użytkownik potwierdza konieczność aktualizowania narzędzi i skryptów przed rozpoczęciem operacji przenoszenia.

Po zakończeniu przenoszenia otrzymasz powiadomienie o wyniku.

Zrzut ekranu witryny Azure Portal przedstawiający powiadomienie z wynikami operacji przenoszenia.

Korzystanie z programu Azure PowerShell

Sprawdź poprawność

Aby przetestować scenariusz przenoszenia bez faktycznego przenoszenia zasobów, użyj polecenia Invoke-AzResourceAction . Użyj tego polecenia tylko wtedy, jeśli musisz wstępnie określić wyniki.

$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
   }

Jeśli weryfikacja zakończy się pomyślnie, nie zobaczysz żadnych danych wyjściowych.

Jeśli walidacja nie powiedzie się, zostanie wyświetlony komunikat o błędzie opisujący, dlaczego nie można przenieść zasobów.

Przesuń

Aby przenieść istniejące zasoby do innej grupy zasobów lub subskrypcji, użyj polecenia Move-AzResource . W poniższym przykładzie pokazano, jak przenieść kilka zasobów do nowej grupy zasobów.

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

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

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

Aby przejść do nowej subskrypcji, dołącz wartość parametru DestinationSubscriptionId .

Interfejs wiersza polecenia platformy Azure

Sprawdź poprawność

Aby przetestować scenariusz przenoszenia bez faktycznego przenoszenia zasobów, użyj polecenia az resource invoke-action . Użyj tego polecenia tylko wtedy, jeśli musisz wstępnie określić wyniki. Aby uruchomić tę operację, potrzebne są następujące elementy:

  • Identyfikator zasobu źródłowej grupy zasobów
  • Identyfikator zasobu docelowej grupy zasobów
  • Identyfikator zasobu każdego zasobu do przeniesienia

W treści żądania użyj polecenia \" , aby uniknąć podwójnych cudzysłowów.

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

Jeśli walidacja zakończy się pomyślnie, zobaczysz:

{} Finished .. 

Jeśli walidacja nie powiedzie się, zostanie wyświetlony komunikat o błędzie opisujący, dlaczego nie można przenieść zasobów.

Przesuń

Aby przenieść istniejące zasoby do innej grupy zasobów lub subskrypcji, użyj polecenia az resource move . W parametrze --ids podaj rozdzielaną spacjami listę identyfikatorów zasobów do przeniesienia.

W poniższym przykładzie pokazano, jak przenieść kilka zasobów do nowej grupy zasobów. Działa on w przypadku korzystania z interfejsu wiersza polecenia platformy Azure w terminalu powłoki 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

W następnym przykładzie pokazano, jak uruchamiać te same polecenia w konsoli programu PowerShell .

$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

Aby przejść do nowej subskrypcji, podaj --destination-subscription-id parametr .

Korzystanie z języka Python

Sprawdź poprawność

Aby przetestować scenariusz przenoszenia bez faktycznego przenoszenia zasobów, użyj metody ResourceManagementClient.resources.begin_validate_move_resources . Użyj tej metody tylko wtedy, gdy trzeba wstępnie określać wyniki.

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

Jeśli weryfikacja zakończy się pomyślnie, nie zobaczysz żadnych danych wyjściowych.

Jeśli walidacja nie powiedzie się, zostanie wyświetlony komunikat o błędzie opisujący, dlaczego nie można przenieść zasobów.

Przesuń

Aby przenieść istniejące zasoby do innej grupy zasobów lub subskrypcji, użyj metody ResourceManagementClient.resources.begin_move_resources . W poniższym przykładzie pokazano, jak przenieść kilka zasobów do nowej grupy zasobów.

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
    }
)

Korzystanie z interfejsu API REST

Sprawdź poprawność

Operacja weryfikowania przenoszenia umożliwia przetestowanie scenariusza przenoszenia bez faktycznego przenoszenia zasobów. Użyj tej operacji, aby sprawdzić, czy przeniesienie zakończy się pomyślnie. Walidacja jest wywoływana automatycznie podczas wysyłania żądania przeniesienia. Tej operacji należy używać tylko wtedy, gdy trzeba wstępnie określać wyniki. Aby uruchomić tę operację, potrzebne są następujące elementy:

  • Nazwa źródłowej grupy zasobów
  • Identyfikator zasobu docelowej grupy zasobów
  • Identyfikator zasobu każdego zasobu do przeniesienia
  • Token dostępu dla konta

Wyślij następujące żądanie:

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

Z treścią żądania:

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

Jeśli żądanie jest poprawnie sformatowane, operacja zwraca następujące elementy:

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

Kod stanu 202 wskazuje, że żądanie weryfikacji zostało zaakceptowane, ale nie zostało jeszcze określone, czy operacja przenoszenia zakończy się pomyślnie. Wartość location zawiera adres URL używany do sprawdzania stanu długotrwałej operacji.

Aby sprawdzić stan, wyślij następujące żądanie:

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

Mimo że operacja jest nadal uruchomiona, nadal otrzymujesz kod stanu 202. Przed ponowną próbą retry-after zaczekaj liczbę sekund wskazanych w wartości. Jeśli operacja przenoszenia zostanie pomyślnie zweryfikowana, otrzymasz kod stanu 204. Jeśli walidacja przenoszenia zakończy się niepowodzeniem, zostanie wyświetlony komunikat o błędzie, taki jak:

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

Przesuń

Aby przenieść istniejące zasoby do innej grupy zasobów lub subskrypcji, użyj operacji Przenieś zasoby .

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

W treści żądania należy określić docelową grupę zasobów i zasoby do przeniesienia.

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

Często zadawane pytania

Moja operacja przenoszenia zasobów, która zwykle trwa kilka minut, została uruchomiona przez prawie godzinę. Czy coś jest nie tak?

Przenoszenie zasobu jest złożoną operacją, która ma różne fazy. Może to obejmować nie tylko dostawcę zasobów zasobu, który próbujesz przenieść. Ze względu na zależności między dostawcami zasobów czas oczekiwania na zakończenie operacji w usłudze Azure Resource Manager wynosi 4 godziny. Ten okres daje dostawcom zasobów możliwość odzyskania po przejściowych problemach. Jeśli żądanie przeniesienia będzie mieć miejsce w ciągu wspomnianego okresu czterech godzin, operacja będzie kontynuowana i może nadal zakończyć się powodzeniem. W tym czasie źródłowe i docelowe grupy zasobów są blokowane, aby uniknąć problemów ze spójnością.

Dlaczego moja grupa zasobów jest zablokowana przez cztery godziny podczas przenoszenia zasobów?

Ukończenie żądania przeniesienia może trwać maksymalnie cztery godziny. Aby zapobiec modyfikacjom przenoszonych zasobów, podczas przenoszenia zasobów blokowane są zarówno źródłowe, jak i docelowe grupy zasobów.

Realizacja żądania przeniesienia obejmuje dwie fazy. W pierwszej fazie zasób jest przenoszony. W drugiej fazie są wysyłane powiadomienia do innych dostawców zasobów, którzy są zależni od przenoszonego zasobu. Grupa zasobów może zostać zablokowana na całe cztery godziny, jeśli dostawca zasobów ulegnie awarii w którejś z faz. W dozwolonym czasie usługa Resource Manager ponawia próbę wykonania kroku, który zakończył się niepowodzeniem.

Jeśli nie można przenieść zasobu w ciągu czterech godzin, usługa Resource Manager odblokuje obie grupy zasobów. Zasoby, które zostały pomyślnie przeniesione, będą znajdować się w docelowej grupie zasobów. Zasoby, które nie udało się przenieść, pozostają w źródłowej grupie zasobów.

Jakie są konsekwencje blokowania źródłowych i docelowych grup zasobów podczas przenoszenia zasobu?

Blokada uniemożliwia usunięcie grupy zasobów, utworzenie nowego zasobu w grupie zasobów oraz usunięcie dowolnego z zasobów związanych z przeniesieniem.

Na poniższej ilustracji przedstawiono komunikat o błędzie z witryny Azure Portal, gdy użytkownik próbuje usunąć grupę zasobów, która jest częścią trwającego przenoszenia.

Zrzut ekranu witryny Azure Portal przedstawiający komunikat o błędzie podczas próby usunięcia grupy zasobów zaangażowanej w trwającą operację przenoszenia.

Co oznacza kod błędu „MissingMoveDependentResources”?

Po przeniesieniu zasobu jego zasoby zależne muszą istnieć w docelowej grupie zasobów lub subskrypcji albo zostać uwzględnione w żądaniu przeniesienia. Kod błędu MissingMoveDependentResources jest wyświetlany, gdy zasób zależny nie spełnia tego wymagania. Komunikat o błędzie zawiera szczegółowe informacje o zasobie zależnym, który musi zostać uwzględniony w żądaniu przeniesienia.

Na przykład przeniesienie maszyny wirtualnej może wymagać przeniesienia siedmiu typów zasobów z trzema różnymi dostawcami zasobów. Ci dostawcy zasobów i typy to:

  • Microsoft.Compute

    • virtualMachines
    • disks
  • Microsoft.Network

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

    • storageAccounts

Innym typowym przykładem jest przenoszenie sieci wirtualnej. Może być konieczne przeniesienie kilku innych zasobów skojarzonych z tą siecią wirtualną. Żądanie przeniesienia może wymagać przeniesienia publicznych adresów IP, tabel routingu, bram sieci wirtualnej, sieciowych grup zabezpieczeń i innych elementów. Ogólnie rzecz biorąc, brama sieci wirtualnej musi zawsze znajdować się w tej samej grupie zasobów co jej sieć wirtualna, nie można ich przenosić oddzielnie.

Co oznacza kod błędu „RequestDisallowedByPolicy”?

Usługa Resource Manager weryfikuje żądanie przeniesienia przed podjęciem próby przeniesienia. Ta weryfikacja obejmuje sprawdzenie zasad zdefiniowanych dla zasobów związanych z przeniesieniem. Jeśli na przykład próbujesz przenieść magazyn kluczy, ale organizacja ma zasadę odmawiania utworzenia magazynu kluczy w docelowej grupie zasobów, weryfikacja zakończy się niepowodzeniem, a przeniesienie zostanie zablokowane. Zwrócony kod błędu to RequestDisallowedByPolicy.

Aby uzyskać więcej informacji na temat zasad, zobacz Co to jest usługa Azure Policy?.

Dlaczego nie mogę przenieść niektórych zasobów na platformie Azure?

Obecnie nie wszystkie zasoby w pomoc techniczna platformy Azure przenoszenia. Aby uzyskać listę zasobów, które obsługują przenoszenie, zobacz Obsługa operacji przenoszenia dla zasobów.

Ile zasobów mogę przenieść w jednej operacji?

Jeśli to możliwe, podziel duże przeniesienia na oddzielne operacje przenoszenia. Usługa Resource Manager natychmiast zwraca błąd, gdy jedna operacja obejmuje więcej niż 800 zasobów. Jednak przeniesienie mniej niż 800 zasobów może również zakończyć się niepowodzeniem w wyniku upłynięcia limitu czasu.

Jakie jest znaczenie błędu, że zasób nie ma stanu Powodzenie?

Gdy zostanie wyświetlony komunikat o błędzie informujący, że nie można przenieść zasobu, ponieważ nie ma on stanu Powodzenie, w rzeczywistości może to być zasób zależny, który blokuje przeniesienie. Zazwyczaj kod błędu to MoveCannotProceedWithResourcesNotInSucceededState.

Jeśli źródło lub docelowa grupa zasobów zawiera sieć wirtualną, podczas przenoszenia sprawdzane są stany wszystkich zasobów zależnych dla sieci wirtualnej. Sprawdzanie obejmuje zasoby bezpośrednio i pośrednio zależne od sieci wirtualnej. Jeśli którykolwiek z tych zasobów ma stan niepowodzenia, przenoszenie jest blokowane. Jeśli na przykład maszyna wirtualna, która korzysta z tej sieci wirtualnej, uległa awarii, przenoszenie zostanie zablokowane. Przenoszenie jest blokowane nawet wtedy, gdy maszyna wirtualna nie jest jednym z przenoszonych zasobów i nie znajduje się w jednej z grup zasobów do przeniesienia.

Po otrzymaniu tego błędu masz dwie opcje. Przenieś zasoby do grupy zasobów, która nie ma sieci wirtualnej, lub skontaktuj się z pomocą techniczną.

Czy mogę przenieść grupę zasobów do innej subskrypcji?

Nie, nie można przenieść grupy zasobów do nowej subskrypcji. Można jednak przenieść wszystkie zasoby w grupie zasobów do grupy zasobów w innej subskrypcji. Ustawienia, takie jak tagi, przypisania ról i zasady, nie są automatycznie przenoszone z oryginalnej grupy zasobów do docelowej grupy zasobów. Należy ponownie zastosować te ustawienia do nowej grupy zasobów. Aby uzyskać więcej informacji, zobacz Move resources to new resource group or subscription (Przenoszenie zasobów do nowej grupy lub subskrypcji).

Nieobsługiwane scenariusze

Platforma blokuje scenariusz, w którym zasoby z subskrypcji A są migrowane do subskrypcji B, gdy jednocześnie zasoby z subskrypcji B są migrowane do subskrypcji C. Jest to zgodnie z projektem.

Następne kroki

Aby uzyskać listę zasobów, które obsługują przenoszenie zasobów, zobacz Obsługa operacji przenoszenia dla zasobów.