다음을 통해 공유


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

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

이동 작업 중에 원본 및 대상 리소스 그룹이 모두 잠깁니다. 즉, 이동이 진행되는 동안 이러한 리소스 그룹 내에서 리소스를 만들거나 삭제하거나 업데이트할 수 없습니다. 그러나 기존 리소스는 완전히 작동합니다. 예를 들어 한 리소스 그룹에서 다른 리소스 그룹으로 VM(가상 머신)을 이동하는 경우 VM을 삭제할 수 없으며 이동 중에 해당 속성(예: VM 크기)을 수정할 수 없습니다. 그럼에도 불구하고 VM은 정상적으로 계속 작동하며 VM을 사용하는 서비스는 추가 가동 중지 시간을 경험하지 않습니다. 잠금은 최대 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 테넌트 내에 있어야 합니다. 두 구독이 모두 동일한 테넌트 ID를 갖는지 확인하려면 Azure PowerShell 또는 Azure CLI를 사용합니다.

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

    원본 및 대상 구독에 대한 테넌트 ID가 다른 경우 다음 메서드를 사용하여 테넌트 ID를 조정합니다.

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

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

  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. 구독 간 이동을 위해 리소스 및 해당 종속 리소스는 동일한 리소스 그룹에 있어야 하며, 함께 이동되어야 합니다. 예를 들어 관리 디스크가 있는 VM은 다른 종속 리소스와 함께 VM 및 관리 디스크를 한 번에 이동해야 합니다.

    리소스를 새 구독으로 이동할 경우 리소스에 종속 리소스가 포함되었는지 여부 그리고 동일한 리소스 그룹에 있는지 여부를 확인합니다. 리소스가 동일한 리소스 그룹에 없으면 리소스를 동일한 리소스 그룹에 결합할 수 있는지 여부를 확인합니다. 결합할 수 있으면 리소스 그룹 간에 이동 작업을 수행하여 모든 리소스를 동일한 리소스 그룹으로 가져옵니다.

    자세한 내용은 구독 간 이동 시나리오를 참조하세요.

구독 간 이동 시나리오

한 구독에서 다른 구독으로 리소스를 이동하는 과정은 3단계로 구성되는 프로세스입니다.

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

설명을 위해 여기에서는 하나의 종속 리소스만 포함되었습니다.

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

리소스 이동

포털 사용

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

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

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

이동 단추를 선택합니다.

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

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

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

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

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

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

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

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

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

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

이동이 완료되면 결과가 알림으로 제공됩니다.

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

Azure CLI 사용

유효성 검사

실제로 리소스를 이동하지 않고 이동 시나리오를 테스트하려면 az resource invoke-action 명령을 사용합니다. 이 명령은 결과를 미리 확인해야 할 경우에만 사용합니다. 이 작업을 실행하려면 다음이 필요합니다.

  • 원본 리소스 그룹의 리소스 ID
  • 대상 리소스 그룹의 리소스 ID
  • 이동할 각 리소스의 리소스 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 .. 

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

이동

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

다음 예제에서는 여러 리소스를 새 리소스 그룹으로 이동하는 방법을 보여 줍니다. Bash 터미널에서 Azure CLI를 사용할 때 작동합니다.

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

다음 예제에서는 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

새 구독으로 이동하려면 --destination-subscription-id 매개 변수를 제공합니다.

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

기존 리소스를 다른 리소스 그룹 또는 구독으로 이동하려면 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 사용

유효성 검사

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

  • 원본 리소스 그룹의 이름
  • 대상 리소스 그룹의 리소스 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>"...}}

이동

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

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가 리소스 그룹을 모두 잠금 해제합니다. 성공적으로 이동한 리소스는 대상 리소스 그룹에 포함됩니다. 이동하지 못한 리소스는 소스 리소스 그룹에 남아 있습니다.

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

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

다음 이미지는 사용자가 이동 중인 리소스 그룹을 삭제하려고 시도할 때 Azure Portal에서 표시되는 오류 메시지를 보여줍니다.

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

아래 이미지에서 VM 리소스는 현재 이동 작업을 진행 중인 리소스 그룹("TestB")에 속합니다. 사용자가 VM의 크기와 같은 속성을 업데이트하려고 하면 Azure Portal에서 오류 메시지가 반환됩니다. 이는 이동 중에 리소스 그룹이 잠겨 리소스를 수정하지 못하기 때문에 발생합니다.

사용자가 VM의 속성(VM 크기)을 업데이트하려고 할 때 오류 메시지를 보여 주는 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입니다.

원본 또는 대상 리소스 그룹에 가상 네트워크가 포함된 경우 이동하는 동안 가상 네트워크에 종속된 모든 리소스의 상태를 검사합니다. 검사에는 가상 네트워크에 직접 및 간접적으로 종속된 리소스가 포함됩니다. 리소스 중 하나라도 실패 상태이면 이동이 차단됩니다. 예를 들어 가상 네트워크를 사용하는 가상 머신이 실패한 경우 이동이 차단됩니다. 가상 머신이 이동되는 리소스 중 하나가 아니고 이동에 사용되는 리소스 그룹 중 하나가 아닌 경우에도 이동이 차단됩니다.

이 오류가 표시되는 경우 두 가지 옵션을 사용할 수 있습니다. 가상 네트워크가 없는 리소스 그룹으로 리소스를 이동하거나 고객 지원팀에 문의하세요.

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

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

다음 단계

이동을 지원하는 리소스 목록은 리소스에 대한 이동 작업 지원을 참조하세요.