Udostępnij za pośrednictwem


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

W tym artykule wyjaśniono, jak przenosić zasoby platformy Azure między grupami zasobów, niezależnie od tego, czy znajdują się one w tej samej subskrypcji, czy w różnych subskrypcjach. Jeśli przeniesienie obejmuje różne subskrypcje, obie subskrypcje muszą być częścią tej samej dzierżawy identyfikatora Entra firmy Microsoft. Przeniesienie można wykonać przy użyciu narzędzi, takich jak witryna Azure Portal, program Azure PowerShell, interfejs wiersza polecenia platformy Azure, interfejs API REST lub język Python.

Podczas operacji przenoszenia zarówno źródłowe, jak i docelowe grupy zasobów są zablokowane. Oznacza to, że nie można tworzyć, usuwać ani aktualizować zasobów w tych grupach zasobów, gdy przenoszenie jest w toku. Jednak istniejące zasoby pozostają w pełni operacyjne. Jeśli na przykład przeniesiesz maszynę wirtualną z jednej grupy zasobów do innej, nie można usunąć maszyny wirtualnej, a jej właściwości (np. rozmiar maszyny wirtualnej) nie mogą być modyfikowane podczas przenoszenia. Mimo to maszyna wirtualna nadal działa normalnie, a usługi zależne od niej nie będą doświadczać żadnych dodatkowych przestojów. Blokada może trwać do czterech godzin, ale większość ruchów jest wykonywanych szybciej, a blokada jest odpowiednio usuwana.

W żądaniu przeniesienia należy określić tylko zasoby najwyższego poziomu (nadrzędnego). Zasoby podrzędne są automatycznie przenoszone wraz z elementem nadrzędnym, ale nie można ich przenosić niezależnie. Na przykład zasób nadrzędny, taki jak Microsoft.Compute/virtualMachines można przenieść, a jego zasób podrzędny, taki jak Microsoft.Compute/virtualMachines/extensions, zostanie przeniesiony z nim. Jednak zasób podrzędny nie może zostać przeniesiony samodzielnie.

Podczas przenoszenia zasobu zachowuje swoje zależności z zasobami podrzędnymi, zależności z innymi zasobami mogą ulec awarii i wymagać ponownej konfiguracji. Przeniesienie zasobu zmienia tylko skojarzona z nią grupę zasobów, ale nie zmienia fizycznego regionu zasobu.

Uwaga

Nie można przenieść zasobów platformy Azure, jeśli istnieje blokada tylko do odczytu w źródłowej lub docelowej grupie zasobów lub subskrypcji.

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ć wartość. Poszukaj skryptów lub szablonów, które należy zaktualizować pod kątem 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.

    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 od dostawcy rozwiązań w chmurze (CSP), zobacz Przenoszenie subskrypcji platformy Azure między subskrybentami a CSP.

  4. Zasoby, które chcesz przenieść, muszą obsługiwać operację przenoszenia. Aby uzyskać listę zasobów, dla których jest obsługiwane przenoszenie, zobacz Obsługa operacji przenoszenia 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. W przeciwnym razie pojawi się komunikat o błędzie informujący, że subskrypcja nie została 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.

    Aby uzyskać stan 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:

    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 przekracza limity, należy sprawdzić, czy można 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 jednocześnie. 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ą rozproszone w różnych grupach zasobów, najpierw przenieś je do jednej grupy.
  • Krok 2: Przenieś jednocześnie zasób i zasoby zależne z subskrypcji źródłowej do subskrypcji docelowej.
  • Krok 3: Opcjonalnie przenieś ponownie zasoby zależne do różnych grup zasobów w ramach subskrypcji docelowej.

Przenoszenie zasobów

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.

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 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 walidacja zakończy się pomyślnie, żadne dane wyjściowe nie zostaną wyświetlone. Jeśli jednak walidacja nie powiedzie się, zostanie wyświetlony komunikat o błędzie, wyjaśniając przyczyny, dla których 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 .

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 walidacja zakończy się pomyślnie, żadne dane wyjściowe nie zostaną wyświetlone. Jeśli jednak walidacja nie powiedzie się, zostanie wyświetlony komunikat o błędzie, wyjaśniając przyczyny, dla których 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 przenoszenie 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órych nie można było przenieść, pozostaną 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 żadnej grupy zasobów. Po drugie, w każdej grupie zasobów blokada uniemożliwia utworzenie nowego zasobu, usunięcie zasobu lub zaktualizowanie właściwości zasobu (na przykład zmiana rozmiaru maszyny wirtualnej).

Na poniższej ilustracji przedstawiono komunikat o błędzie z portalu Azure, 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.

Na poniższej ilustracji zasób maszyny wirtualnej należy do grupy zasobów ("TestB"), która jest obecnie w trakcie operacji przenoszenia. Gdy użytkownik próbuje zaktualizować właściwość maszyny wirtualnej, na przykład jej rozmiar, witryna Azure Portal zwraca komunikat o błędzie. Dzieje się tak, ponieważ grupa zasobów jest zablokowana podczas przenoszenia, uniemożliwiając wszelkie modyfikacje jej zasobów.

Zrzut ekranu witryny Azure Portal przedstawiający komunikat o błędzie, gdy użytkownik próbuje zaktualizować właściwość (rozmiar maszyny wirtualnej) maszyny wirtualnej.

Ponadto podczas przenoszenia zasobu ani źródło, ani docelowa grupa zasobów nie mogą uczestniczyć w innych operacjach przenoszenia jednocześnie. Jeśli na przykład zasoby są przenoszone z grupy zasobów A do grupy zasobów B, ani grupa A, ani grupa B nie mogą być zaangażowane w inną operację przenoszenia, taką jak przenoszenie zasobów do lub z grupy zasobów C w tym samym czasie. To ograniczenie gwarantuje, że grupy zasobów nie są blokowane przez wiele operacji powodujących konflikt podczas procesu przenoszenia.

Co oznacza kod błędu „MissingMoveDependentResources”?

Podczas przenoszenia zasobu zasoby zależne muszą istnieć w docelowej grupie zasobów lub subskrypcji albo muszą zostać dołączone do żądania 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 na platformie Azure obsługują przenoszenie. Aby uzyskać listę zasobów, dla których jest obsługiwane 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 jest następujący: 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).

Następne kroki

Aby uzyskać listę zasobów, dla których jest obsługiwane przenoszenie, zobacz Obsługa operacji przenoszenia zasobów.