다음을 통해 공유


새 리소스 그룹 또는 구독으로 Azure 리소스 이동

이 문서에서는 동일한 구독 내의 리소스 그룹 또는 다른 구독 간에 Azure 리소스를 이동하는 방법을 설명합니다. 이동에 서로 다른 구독이 포함된 경우 두 구독 모두 동일한 Microsoft Entra ID 테넌트에 속해야 합니다. Azure Portal, Azure PowerShell, Azure CLI, REST API 또는 Python과 같은 도구를 사용하여 리소스를 이동할 수 있습니다.

이동 작업 중에 원본 및 대상 리소스 그룹이 모두 잠겨 있으므로 이동이 진행되는 동안 이러한 리소스 그룹 내에서 리소스를 만들거나 삭제하거나 업데이트할 수 없습니다. 그러나 기존 리소스는 완전히 작동합니다. 예를 들어 한 리소스 그룹에서 다른 리소스 그룹으로 가상 머신을 이동하는 경우 삭제할 수 없으며 이동 중에 해당 속성(예: 크기)을 수정할 수 없습니다. 그럼에도 불구하고 가상 머신은 정상적으로 계속 작동하며, 가상 머신을 사용하는 서비스는 추가 가동 중지 시간을 경험하지 않습니다. 잠금은 최대 4시간까지 지속될 수 있으며, 대부분의 이동은 더 빠르게 완료되며, 그에 따라 잠금이 제거됩니다.

이동 요청에 최상위(부모) 리소스만 지정해야 합니다. 자식 리소스는 부모와 함께 자동으로 이동하지만 독립적으로 이동할 수는 없습니다. 예를 들어 부모 리소스와 같은 Microsoft.Compute/virtualMachines 부모 리소스를 이동할 수 있으며 해당 자식 리소스(예: Microsoft.Compute/virtualMachines/extensions 이동)를 이동할 수 있습니다. 그러나 자식 리소스는 자체적으로 이동할 수 없습니다.

리소스를 이동하면 자식 리소스와의 종속성이 유지되지만 다른 리소스와의 종속성은 중단될 수 있으며 다시 구성해야 할 수도 있습니다. 리소스를 이동하면 연결된 리소스 그룹만 변경되고 리소스의 물리적 영역은 변경되지 않습니다.

참고 항목

원본, 대상 리소스 그룹 또는 구독에 읽기 전용 잠금이 있는 경우 Azure 리소스를 이동할 수 없습니다.

변경된 리소스 ID

리소스를 이동하면 해당 리소스 ID가 변경됩니다. 리소스 ID의 표준 형식은 /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}입니다. 리소스를 새 리소스 그룹 또는 구독으로 이동할 때는 해당 경로에서 하나 이상의 값을 변경합니다.

어디서나 리소스 ID를 사용하는 경우 해당 값을 변경해야 합니다. 예를 들어 포털에 리소스 ID를 참조하는 사용자 지정 대시보드 가 있는 경우 해당 값을 업데이트해야 합니다. 새 리소스 ID에 대해 업데이트해야 하는 스크립트 또는 템플릿을 찾아봅니다.

리소스를 이동하기 전의 검사 목록

리소스를 이동하기 전에 몇 가지 중요한 단계가 있습니다. 이러한 조건을 확인하는 경우 오류를 방지할 수 있습니다.

  1. 원본 및 대상 구독이 활성 상태여야 합니다. 사용하지 않도록 설정된 계정을 사용하도록 설정하는 데 문제가 있는 경우 Azure 지원 요청을 만듭니다. 문제 유형으로 구독 관리를 선택합니다.

  2. 원본 및 대상 구독은 동일한 Microsoft Entra 테넌트 내에 있어야 합니다. Azure CLI 또는 PowerShell을 사용하여 두 구독에 동일한 테넌트 ID가 있는지 확인합니다.

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

    원본 및 대상 구독의 테넌트 ID가 일치하지 않는 경우 다음 메서드를 사용하여 조정합니다.

  3. CSP(클라우드 솔루션 공급자) 파트너 간에 리소스를 이동하려는 경우 자세한 내용은 구독자와 CSP 간에 Azure 구독 전송을 참조하세요.

  4. 이동하려는 리소스는 이동 작업을 지원해야 합니다. 이동 작업을 지원하는 리소스 목록은 이동 작업에 대한 Azure 리소스 종류를 참조하세요.

  5. 일부 서비스에는 리소스를 이동할 때 특정 제한 사항 또는 요구 사항이 있으므로 이러한 서비스 내에서 리소스를 이동하기 전에 다음 이동 지침을 확인합니다.

  6. 이동되는 리소스의 리소스 공급자가 대상 구독에 등록되어야 합니다. 그러지 않으면 구독이 리소스 형식에 대해 등록되지 않았음을 알리는 오류 메시지가 표시됩니다. 해당 리소스 종류와 함께 사용된 적이 없는 새 구독으로 리소스를 이동할 때 이 오류가 표시될 수 있습니다.

    등록 상태를 가져오려면 다음을 수행합니다.

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

    리소스 공급자를 등록하려면 다음을 수행합니다.

    az provider register --namespace Microsoft.Batch
    
  7. 이동 작업을 시작하기 전에 리소스를 이동하는 구독의 구독 할당량을 확인합니다. 대상 구독이 제한을 초과하는 할당량 증가를 요청할 수 있는지 확인합니다. 한도 및 증가를 요청하는 방법에 대한 자세한 지침은 Azure 구독 및 서비스 제한, 할당량 및 제약 조건을 참조하세요.

  8. 리소스를 이동시키는 계정에는 적어도 다음과 같은 권한이 있어야 합니다.

    • 원본 리소스 그룹: Microsoft.Resources/subscriptions/resourceGroups/moveResources/action
    • 대상 리소스 그룹: Microsoft.Resources/subscriptions/resourceGroups/write
  9. 활성 Azure 역할 할당(또는 동일한 할당이 있는 자식 리소스)을 사용하여 리소스를 이동하는 경우 역할 할당은 이동되지 않고 분리됩니다. 이동 후 역할 할당을 다시 만들어야 합니다. 결국 분리된 역할 할당은 자동으로 제거되지만 이동하기 전에 역할 할당을 제거하는 것이 좋습니다.

    역할 할당을 관리하는 방법에 대한 자세한 내용은 Azure 역할 할당 나열 및 Azure 역할 할당을 참조하세요.

  10. 구독 간 이동을 위해 리소스 및 해당 종속 리소스는 동일한 리소스 그룹에 있어야 하며, 함께 이동되어야 합니다. 예를 들어 관리 디스크가 있는 가상 머신에는 다른 종속 리소스와 함께 가상 머신과 관리 디스크가 함께 이동해야 합니다.

    리소스를 새 구독으로 이동하는 경우 리소스에 종속 리소스가 있는지, 동일한 리소스 그룹에 있는지 확인합니다. 리소스가 동일한 리소스 그룹에 없는 경우 동일한 리소스 그룹에 결합할 수 있는지 확인합니다. 이 경우 리소스 그룹 간에 하나의 이동 작업을 사용하여 모든 리소스를 동일한 리소스 그룹으로 통합합니다.

    자세한 내용을 보려면 구독 간에 이동하는 시나리오를 계속 진행합니다.

구독 간 이동 시나리오

한 구독에서 다른 구독으로 리소스를 이동하는 것은 3단계 프로세스입니다. 다음 단계를 설명하기 위해 하나의 종속 리소스만 표시됩니다.

구독 간 리소스 이동의 세 단계 프로세스를 보여 주는 다이어그램

  • 1단계: 종속 리소스가 서로 다른 리소스 그룹 간에 분산된 경우 먼저 이를 하나의 리소스 그룹으로 이동합니다.
  • 2단계: 소스 구독에서 대상 구독으로 리소스 및 종속 리소스를 함께 이동합니다.
  • 3단계: 선택적으로 대상 구독 내에서 종속 리소스를 여러 리소스 그룹으로 다시 배포합니다.

리소스 이동

Azure Portal 사용

  1. 리소스를 이동하려면 해당 리소스가 포함된 리소스 그룹을 선택합니다.

  2. 이동하려는 리소스를 선택합니다. 모든 리소스를 이동하려면 목록 위쪽에서 확인란을 선택합니다. 또는 리소스를 개별적으로 선택합니다.

    이동할 리소스 선택을 보여 주는 Azure Portal의 스크린샷

  3. 이동 단추를 선택합니다.

    세 개의 옵션이 있는 이동 단추를 표시하는 Azure Portal의 스크린샷

    이 단추는 세 가지 옵션을 제공합니다.

  4. 리소스를 새 리소스 그룹 또는 구독으로 이동하는지 선택합니다.

  5. 원본 리소스 그룹은 자동으로 설정됩니다. 대상 리소스 그룹을 지정합니다. 새 구독으로 이동하는 경우 이 항목도 지정합니다. 다음을 선택합니다.

사용자가 이동 작업에 대한 대상 리소스 그룹을 지정하는 Azure Portal의 스크린샷

  1. 포털에서 리소스를 이동할 수 있는지 유효성을 검사합니다. 유효성 검사가 완료될 때까지 기다립니다.

이동 작업에 대한 유효성 검사 프로세스를 보여 주는 Azure Portal의 스크린샷

  1. 유효성 검사가 성공적으로 완료되면 다음을 선택합니다.

  2. 이 리소스에 대해 도구와 스크립트를 업데이트해야 함을 승인합니다. 리소스 이동을 시작하려면 이동을 선택합니다.

사용자가 이동 작업을 시작하기 전에 도구 및 스크립트 업데이트 필요성을 인식하는 Azure Portal의 스크린샷

  1. Azure Portal은 이동이 완료되면 알려줍니다.

이동 작업의 결과가 있는 알림을 표시하는 Azure Portal의 스크린샷

Azure CLI 사용

유효성 검사

실제로 리소스를 실시간으로 이동하지 않고 이동 시나리오를 테스트하려면 이 az resource invoke-action 명령을 사용합니다. 다음을 수행하지 않고 결과를 모델링해야 하는 경우에만 이 명령을 사용합니다. 이 작업을 실행하려면 원본 리소스 그룹, 대상 리소스 그룹 및 이동하는 각 리소스의 리소스 ID가 필요합니다.

요청 본문에서 큰따옴표를 이스케이프하는 데 사용합니다 \" .

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

유효성 검사를 통과하면 다음이 표시됩니다.

{} Finished .. 

유효성 검사에 실패하면 리소스가 이동하지 않는 이유를 설명하는 오류 메시지가 표시됩니다.

Move

기존 리소스를 다른 리소스 그룹 또는 구독으로 이동하려면 이 az resource move 명령을 사용합니다. --ids 매개 변수에서 이동할 리소스 ID를 쉼표로 구분한 목록을 제공합니다.

다음 명령은 여러 리소스를 새 리소스 그룹으로 이동하는 방법을 보여 줍니다. Bash 터미널 또는 Azure PowerShell 콘솔에서 Azure CLI를 사용합니다. 리소스를 --destination-subscription-id 새 구독으로 이동하는 매개 변수를 제공합니다.

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

Azure PowerShell 사용

유효성 검사

실제로 리소스를 실시간으로 이동하지 않고 이동 시나리오를 테스트하려면 Azure PowerShell에서 Invoke-AzResourceAction 명령을 사용합니다. 다음을 수행하지 않고 결과를 모델링해야 하는 경우에만 이 명령을 사용합니다.

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

유효성 검사에 성공하면 출력이 표시되지 않습니다. 그러나 유효성 검사가 실패할 경우 리소스가 이동하지 않는 이유를 설명하는 오류 메시지가 표시됩니다.

Move

다른 리소스 그룹 또는 구독에 기존 리소스를 이동하려면 Move-AzResource 명령을 사용합니다. 다음 예제에서는 여러 리소스를 새 리소스 그룹으로 이동하는 방법을 보여 줍니다.

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

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

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

새 구독으로 이동하려면 DestinationSubscriptionId 매개 변수 값을 포함합니다.

Python 사용

유효성 검사

실제로 리소스를 실시간으로 이동하지 않고 이동 시나리오를 테스트하려면 이 ResourceManagementClient.resources.begin_validate_move_resources 방법을 사용합니다. 다음을 수행하지 않고 결과를 모델링해야 하는 경우에만 이 메서드를 사용합니다.

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

유효성 검사에 성공하면 출력이 표시되지 않습니다. 그러나 유효성 검사가 실패할 경우 리소스가 이동하지 않는 이유를 설명하는 오류 메시지가 표시됩니다.

Move

기존 리소스를 다른 리소스 그룹 또는 구독으로 이동하려면 Python에서 메서드를 ResourceManagementClient.resources.begin_move_resources 사용합니다. 다음 예제에서는 여러 리소스를 새 리소스 그룹으로 이동하는 방법을 보여 줍니다.

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

REST API 사용

유효성 검사

이를 validate move operation 통해 실제로 리소스를 이동하지 않고도 이동 시나리오를 테스트할 수 있습니다. 이 작업을 사용하여 이동이 성공할 수 있는지 확인합니다. 이동 요청을 보내면 유효성 검사가 자동으로 호출됩니다. 다음을 수행하지 않고 결과를 모델링해야 하는 경우에만 이 작업을 사용합니다. 이 작업을 실행하려면 다음이 필요합니다.

  • 원본 리소스 그룹의 이름
  • 대상 리소스 그룹의 리소스 ID
  • 이동할 각 리소스의 리소스 ID
  • 계정에 대한 액세스 토큰

다음 요청을 보냅니다.

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

다음 요청 본문을 사용합니다.

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

요청 서식이 올바르게 지정되면 작업은 다음을 반환합니다.

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

202 상태 코드는 유효성 검사 요청이 수락되었음을 나타내지만 이동 작업이 성공할지는 아직 결정되지 않았습니다. location 값에는 장기 실행 작업의 상태를 확인하는 데 사용하는 URL이 포함되어 있습니다.

상태를 확인하려면 다음 요청을 보냅니다.

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

작업이 실행되는 동안 202 상태 코드를 계속 받습니다. 다시 시도하기 전에 retry-after 값에 지정된 시간(초) 동안 대기합니다. 이동 유효성 검사가 성공하면 204 상태 코드를 받게 됩니다. 이동 유효성 검사에 실패하면 다음과 유사한 오류 메시지가 표시됩니다.

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

Move

기존 리소스를 다른 리소스 그룹 또는 구독으로 이동하려면 작업을 Move resources 사용합니다.

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

요청 본문에서 이동할 대상 리소스 그룹 및 리소스를 지정합니다.

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

자주 묻는 질문

일반적으로 몇 분 정도 걸리는 리소스 이동 작업이 거의 한 시간 동안 실행되었습니다. 무슨 문제가 있나요?

리소스 이동은 여러 단계를 사용하는 복잡한 작업입니다. 이동하려는 리소스의 리소스 공급자보다 많은 것이 관련될 수 있습니다. Azure Resource Manager를 사용하면 리소스 공급자 간의 종속성 때문에 이동 작업을 4시간 동안 완료할 수 있습니다. 이 기간은 일시적인 문제에서 복구할 시간을 제공합니다. 이동 요청이 4시간 내에 있으면 작업이 계속 완료되고 성공할 수 있습니다. 이 시간 동안은 일관성 문제를 방지하기 위해 소스 및 대상 리소스 그룹이 잠깁니다.

리소스 이동 중 내 리소스 그룹이 4시간 동안 잠기는 이유는 무엇인가요?

  • 이동 작업을 완료하는 데 4시간이 허용됩니다. 이 시간 동안 원본 및 대상 리소스 그룹이 잠겨 수정되지 않습니다.

  • 이동 요청에는 두 단계가 있습니다. 리소스는 첫 번째 단계에서 이동하며 이동 중인 리소스에 의존하는 리소스 공급자는 두 번째 단계에서 알림을 받습니다. 리소스 공급자가 두 단계 중 하나에 실패하는 경우 리소스 그룹을 4시간 내내 잠글 수 있습니다. Resource Manager는 이동 작업의 범위 동안 실패한 단계를 시작합니다.

  • 리소스가 4시간 이내에 이동하지 않으면 Resource Manager에서 두 리소스 그룹의 잠금을 해제합니다. 성공적으로 이동한 리소스는 대상 리소스 그룹에 있습니다. 이동하지 못한 리소스는 원본 리소스 그룹에 남아 있습니다.

리소스 이동 중 소스 및 대상 리소스 그룹이 잠기면 어떤 영향이 있나요?

잠금을 사용하면 리소스 그룹 중 하나를 삭제할 수 없습니다. 둘째, 잠금을 사용하면 새 리소스를 만들거나, 리소스를 삭제하거나, 각 리소스 그룹 내에서 리소스의 속성을 업데이트할 수 없습니다(예: 가상 머신의 크기 변경).

다음 이미지는 사용자가 진행 중인 이동의 일부인 리소스 그룹을 삭제하려고 할 때 Azure Portal의 오류 메시지를 보여 줍니다.

진행 중인 이동 작업에 포함된 리소스 그룹을 삭제하려고 할 때 오류 메시지를 보여 주는 Azure Portal의 스크린샷

아래 이미지에서 가상 머신 리소스는 현재 이동 작업을 진행 중인 리소스 그룹("TestB")에 속합니다. 사용자가 가상 머신의 속성(예: 크기)을 업데이트하려고 하면 Azure Portal에서 오류 메시지를 반환합니다. 이는 리소스 그룹이 이동하는 동안 잠겨 있기 때문에 발생하며, 이는 리소스가 수정되지 않도록 보호합니다.

사용자가 가상 머신의 속성(가상 머신 크기)을 업데이트하려고 할 때 오류 메시지를 보여 주는 Azure Portal의 스크린샷.

또한 원본 또는 대상 리소스 그룹은 리소스 이동 중에 동시에 다른 이동 작업에 참여할 수 없습니다. 예를 들어 리소스가 리소스 그룹 A에서 리소스 그룹 B로 이동하는 경우 그룹 A와 그룹 B는 동시에 다른 이동 작업에 참여할 수 없습니다(예: 리소스 그룹 C 간에 리소스 이동). 이 제한은 이동 프로세스 중에 여러 충돌 작업이 리소스 그룹을 잠그는 것을 방지합니다.

"MissingMoveDependentResources" 오류 코드는 무엇을 의미하나요?

리소스를 이동할 때 해당 종속 리소스는 대상 리소스 그룹 또는 구독에 있거나 이동 요청에 포함되어야 합니다. 종속 리소스가 이 요구 사항을 충족하지 않으면 MissingMoveDependentResources 오류 코드가 표시됩니다. 오류 메시지는 이동 요청에 포함해야 하는 종속 리소스에 대한 세부 정보를 제공합니다.

예를 들어 가상 머신을 이동하려면 세 가지 서로 다른 리소스 공급자와 함께 7개의 리소스 유형을 이동해야 합니다. 이러한 리소스 공급자 및 유형은 다음과 같습니다.

  • Microsoft.Compute

    • virtualMachines
    • disks
  • Microsoft.Network

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

    • storageAccounts

또 다른 일반적인 예로는 해당 가상 네트워크와 연결된 다른 여러 리소스를 이동해야 할 수 있는 가상 네트워크 이동이 포함됩니다. 이동 요청에는 공용 IP 주소, 경로 테이블, 가상 네트워크 게이트웨이, 네트워크 보안 그룹 및 기타 리소스를 이동해야 할 수 있습니다. 가상 네트워크 게이트웨이는 별도로 이동할 수 없으므로 가상 네트워크와 동일한 리소스 그룹에 있어야 합니다.

“RequestDisallowedByPolicy” 오류 코드는 무엇을 의미하나요?

Resource Manager는 이동을 시도하기 전에 이동 요청의 유효성을 검사합니다. 이 유효성 검사에는 이동과 관련된 리소스에 대해 정의된 검사 정책이 포함됩니다. 예를 들어 키 자격 증명 모음을 이동하려고 하지만 조직에 대상 리소스 그룹에 생성되는 키 자격 증명 모음을 거부하는 정책이 있는 경우 유효성 검사가 실패하고 이동이 차단됩니다. 반환된 오류 코드는 RequestDisallowedByPolicy입니다.

정책에 관한 자세한 내용은 Azure Policy란?을 참조하세요.

Azure에서 일부 리소스를 이동할 수 없는 이유는 무엇인가요?

현재 모든 Azure 리소스에서 이동 작업을 허용하는 것은 아닙니다.

한 작업에서 이동할 수 있는 리소스는 몇 개입니까?

가능한 경우 큰 이동을 다른 이동 작업으로 구분합니다. 단일 작업에 800개가 넘는 리소스가 포함되면 Resource Manager가 즉시 오류를 반환합니다. 그러나 800개 미만의 리소스 이동은 시간 초과로 인해 실패할 수도 있습니다.

리소스가 "성공" 상태가 아니라는 오류의 의미는 무엇인가요?

리소스가 성공 상태가 아니므로 이동하지 않음을 나타내는 오류 메시지가 표시되면 종속 리소스가 이동을 차단하고 있기 때문일 수 있습니다. 일반적으로 오류 코드는 MoveCannotProceedWithResourcesNotInSucceededState입니다.

원본 또는 대상 리소스 그룹에 가상 네트워크가 포함된 경우 이동 중에 해당 가상 네트워크에 의존하는 모든 리소스의 상태를 확인합니다. 여기에는 네트워크에 직간접적으로 의존하는 리소스가 포함됩니다. 리소스가 실패한 경우 이동이 차단됩니다. 예를 들어 가상 네트워크를 사용하는 가상 머신이 실패한 경우 이동이 차단됩니다. 또한 가상 머신이 이동 중인 리소스 중 하나가 아니며 이동하는 동안 리소스 그룹 중 하나에 없는 경우에도 차단됩니다.

이 장애물에 대한 두 가지 해결 방법은 리소스를 가상 네트워크가 없거나 지원 팀에 문의하지 않는 리소스 그룹으로 이동하는 것입니다.

리소스 그룹을 다른 구독으로 이동할 수 있나요?

아니요, 리소스 그룹을 새 구독으로 이동할 수 없습니다. 그러나 리소스 그룹의 모든 리소스를 다른 구독의 리소스 그룹으로 이동할 수 있습니다. 태그, 역할 할당 및 정책과 같은 설정은 원래 리소스 그룹에서 대상 리소스 그룹으로 자동으로 전송되지 않습니다. 이러한 설정을 새 리소스 그룹에 수동으로 적용해야 합니다.

다음 단계

리소스에 대한 이동 작업 지원을 계속 참조하여 이동 작업을 지원하는 Azure 리소스를 확인합니다.