Kaynakları yeni bir kaynak grubuna veya aboneliğe taşıma

Bu makalede, Azure kaynaklarını aynı abonelik altındaki başka bir Azure aboneliğine veya başka bir kaynak grubuna nasıl taşıyabilirsiniz? Azure portalı, Azure PowerShell, Azure CLI veya REST API ile kaynakları taşıyabilirsiniz.

Taşıma işlemi sırasında hem kaynak grubu hem de hedef grubu kilitlenir. Taşıma tamamlanana kadar kaynak gruplarında yazma ve silme işlemleri kilitlenir. Bu kilit, kaynak gruplarına kaynak ekleyip güncelleştireylene veya silemezsiniz. Bu, kaynakların donmuş olduğu anlamına da geliyor. Örneğin, bir Azure SQL sunucusunu, veritabanlarını ve diğer bağımlı kaynakları yeni bir kaynak grubuna veya aboneliğe taşısanız, veritabanlarını kullanan uygulamalar kapalı kalma süresi yaşamaz. Yine de veritabanlarını okuyabilir ve veritabanlarına yazabilir. Kilit en fazla dört saat sürebilir, ancak çoğu hareket çok daha kısa sürede tamamlanır.

Taşımanız için yeni bağımlı kaynaklar ayar gerektiriyorsa, yeniden yapılandırana kadar bu hizmetlerde bir kesintiyle karşı karşınıza gelir.

Bir kaynağı taşıdığınızda yalnızca onu yeni bir kaynak grubuna veya aboneliğe taşımış olursunuz. Bu işlem kaynağın konumunu değiştirmez.

Kaynak kimliği değiştirildi

Bir kaynağı taşıyca, kaynak kimliğini değiştirirsiniz. Kaynak kimliği için standart biçim şu /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} şekildedir: . Bir kaynağı yeni bir kaynak grubuna veya aboneliğe taşıyabilirsiniz. Bu yolda bir veya daha fazla değeri değiştirirsiniz.

Kaynak kimliğini herhangi bir yerde kullanırsanız bu değeri değiştirmeniz gerekir. Örneğin portalda kaynak kimliğine başvurulan özel bir pano varsa bu değeri güncelleştirmeniz gerekir. Yeni kaynak kimliği için güncelleştirilmiş olması gereken betikleri veya şablonları ara.

Kaynakları taşımadan önce kullanılacak kontrol listesi

Bir kaynağı taşımadan önce gerçekleştirmeniz gereken bazı önemli adımlar vardır. Bu koşulları doğrulayarak hataları önleyebilirsiniz.

  1. Taşımak istediğiniz kaynaklar taşıma işlemi desteklemeli. Taşımayı destekleyen kaynakların listesi için bkz. Kaynaklar için taşıma işlemi desteği.

  2. Bazı hizmetlerde kaynakları taşıma işlemi için belirli sınırlamalar veya gereksinimler vardır. Aşağıdaki hizmetlerden herhangi birini taşınıyorsanız, taşımadan önce bu kılavuzu kontrol edin.

  3. Azure rolüne sahip bir kaynağı doğrudan kaynağa (veya alt kaynağa) taşımanız, rol ataması taşınmaz ve yalnız hale gelir. Taşımadan sonra rol atamayı yeniden oluşturmanız gerekir. Sonunda yalnız kalan rol ataması otomatik olarak kaldırılır, ancak taşımadan önce rol atamanın kaldırılmasını öneririz.

    Rol atamalarını yönetme hakkında bilgi için bkz. Azure rol atamalarını listele ve Azure rollerini atama.

  4. Kaynak ve hedef abonelikler etkin olmalı. Devre dışı bırakılmış bir hesabı etkinleştirme konusunda sorun varsa, bir Azure desteği oluşturun. Sorun türü olarak Abonelik Yönetimi'ne tıklayın.

  5. Kaynak ve hedef abonelikler aynı kiracıda Azure Active Directory gerekir. Her iki aboneliğin de aynı kiracı kimliğine sahip olduğunu kontrol etmek için Azure PowerShell Azure CLI kullanın.

    Daha Azure PowerShell için şunları kullanın:

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

    Azure CLI için şunu kullanın:

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

    Kaynak ve hedef aboneliklerin kiracı kimlikleri aynı değilse, kiracı kimliklerini mutabık kılmak için aşağıdaki yöntemleri uygulayın:

  6. Hedef abonelik, taşınan kaynağın kaynak sağlayıcısına kayıtlı olmalıdır. Yoksa, aboneliğin kaynak türü için kayıtlı olmadığını belirten bir hata alırsınız. Bir kaynağı yeni bir aboneliğe taşıma sırasında bu hatayı alabilirsiniz ancak bu abonelik bu kaynak türüyle hiç kullanılmadı.

    PowerShell için, kayıt durumunu almak için aşağıdaki komutları kullanın:

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

    Kaynak sağlayıcısını kaydetmek için şunları kullanın:

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

    Azure CLI için, kayıt durumunu almak için aşağıdaki komutları kullanın:

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

    Kaynak sağlayıcısını kaydetmek için şunları kullanın:

    az provider register --namespace Microsoft.Batch
    
  7. Kaynakları hareket ettiren hesabın en azından aşağıdaki izinlere sahip olması gerekir:

    • Kaynak kaynak grubunda Microsoft.Resources/subscriptions/resourceGroups/moveResources/action.
    • Hedef kaynak grubunda Microsoft.Resources/subscriptions/resourceGroups/write.
  8. Kaynakları taşımadan önce, kaynakları buraya taşımanız gereken aboneliğin abonelik kotalarını kontrol edin. Kaynakları taşıma, aboneliğin sınırlarını aşacak olduğu anlamına geliyorsa kotada artış isteğinde olup olmadığınız gözden geçirmeniz gerekir. Sınırların listesi ve artış isteği için bkz. Azure aboneliği ve hizmet sınırları, kotaları ve kısıtlamaları.

  9. Abonelikler arasında taşıma için, kaynağın ve bağımlı kaynaklarının aynı kaynak grubunda yer alan ve birlikte taşınarak olması gerekir. Örneğin, yönetilen diskleri olan bir VM, diğer bağımlı kaynaklarla birlikte VM ile yönetilen disklerin birlikte taşınmalarını gerektirir.

    Bir kaynağı yeni bir aboneliğe taşınıyorsanız, kaynağın bağımlı kaynaklara sahip olup olmadığını ve aynı kaynak grubunda olup olmadığını kontrol edin. Kaynaklar aynı kaynak grubunda yoksa, kaynakların aynı kaynak grubunda birleştirip birleştirilene olmadığını kontrol edin. Öyleyse, kaynak grupları arasında taşıma işlemi kullanarak tüm bu kaynakları aynı kaynak grubuna getirin.

    Daha fazla bilgi için bkz. Abonelikler arasında taşıma senaryosu.

Abonelikler arasında taşıma senaryosu

Kaynakları bir abonelikten diğerine taşıma üç adımlı bir işlemdir:

abonelikler arası taşıma senaryosu

Gösterim amacıyla yalnızca bir bağımlı kaynağımız vardır.

    1. Adım: Bağımlı kaynaklar farklı kaynak gruplarına dağıtılıyorsa, önce bunları bir kaynak grubuna taşımanız gerekir.
    1. Adım: Kaynağı ve bağımlı kaynakları kaynak abonelikten hedef aboneliğe taşıma.
    1. Adım: İsteğe bağlı olarak, bağımlı kaynakları hedef abonelik içindeki farklı kaynak gruplarına yeniden dağıtabilirsiniz.

Portalı kullanma

Kaynakları taşımak için bu kaynakları içeren kaynak grubunu seçin.

Taşımak istediğiniz kaynakları seçin. Tüm kaynakları taşımak için listenin en üstünde yer alan onay kutusunu seçin. Veya kaynakları ayrı ayrı seçin.

kaynakları seçme

Taşı düğmesini seçin.

taşıma seçenekleri

Bu düğme size üç seçenek sunar:

Kaynakları yeni bir kaynak grubuna mı yoksa yeni bir aboneliğe mi taşımayı seçin.

Kaynak kaynak grubu otomatik olarak ayarlanır. Hedef kaynak grubunu belirtin. Yeni bir aboneliğe taşınıyorsanız aboneliği de belirtin. İleri’yi seçin.

hedef kaynak grubunu seçme

Portal, kaynakların taşına olduğunu doğrular. Doğrulamanın tamamlanması için bekleyin.

Taşıma doğrulaması

Doğrulama başarıyla tamamlandığında, Sonraki'yi seçin.

Bu kaynaklar için araçları ve betikleri güncelleştirmeniz gerektiğini kabul edin. Kaynakları taşımaya başlamak için Taşı' yı seçin.

hedef seçin

Taşıma tamamlandığında sonuç size bildirilir.

taşıma sonuçlarını görüntüle

Azure PowerShell kullanma

Doğrulama

Kaynakları gerçekten taşımadan taşıma senaryonuzu test etmek için Invoke-AzResourceAction komutunu kullanın. Bu komutu yalnızca sonuçları önceden belirlemeniz gerektiğinde kullanın. Bu işlemi çalıştırmak için şunlar gerekir:

  • Kaynak kaynak grubunun kaynak KIMLIĞI
  • Hedef kaynak grubunun kaynak KIMLIĞI
  • Taşınacak her kaynağın kaynak KIMLIĞI
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}' }  

Doğrulama başarılı olursa, çıkış yok görürsünüz.

Doğrulama başarısız olursa, kaynakların neden taşınamayacağını açıklayan bir hata iletisi görürsünüz.

Taşı

Mevcut kaynakları başka bir kaynak grubuna veya aboneliğe taşımak için Move-AzResource komutunu kullanın. Aşağıdaki örnek, birkaç kaynağın yeni bir kaynak grubuna nasıl taşınacağını gösterir.

$webapp = Get-AzResource -ResourceGroupName OldRG -ResourceName ExampleSite
$plan = Get-AzResource -ResourceGroupName OldRG -ResourceName ExamplePlan
Move-AzResource -DestinationResourceGroupName NewRG -ResourceId $webapp.ResourceId, $plan.ResourceId

Yeni bir aboneliğe geçmek için parametresi için bir değer ekleyin DestinationSubscriptionId .

Azure CLI kullanma

Doğrulama

Kaynakları gerçekten taşımadan taşıma senaryonuzu test etmek için az Resource Invoke-Action komutunu kullanın. Bu komutu yalnızca sonuçları önceden belirlemeniz gerektiğinde kullanın. Bu işlemi çalıştırmak için şunlar gerekir:

  • Kaynak kaynak grubunun kaynak KIMLIĞI
  • Hedef kaynak grubunun kaynak KIMLIĞI
  • Taşınacak her kaynağın kaynak KIMLIĞI

İstek gövdesinde, \" çift tırnak işaretlerini atlamak için kullanın.

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

Doğrulama başarılı olursa şunu görürsünüz:

{} Finished .. 

Doğrulama başarısız olursa, kaynakların neden taşınamayacağını açıklayan bir hata iletisi görürsünüz.

Taşı

Mevcut kaynakları başka bir kaynak grubuna veya aboneliğe taşımak için az Resource Move komutunu kullanın. Taşınacak kaynakların kaynak kimliklerini sağlayın. Aşağıdaki örnek, birkaç kaynağın yeni bir kaynak grubuna nasıl taşınacağını gösterir. --idsParametresinde, taşınacak kaynak kimliklerinin boşlukla ayrılmış bir listesini sağlayın.

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

Yeni bir aboneliğe geçmek için --destination-subscription-id parametresini sağlayın.

REST API’yi kullanma

Doğrulama

Taşıma işlemini Doğrula işlemi , kaynakları gerçekten taşımadan taşıma senaryonuzu test etmenizi sağlar. Taşımanın başarılı olup olmadığını denetlemek için bu işlemi kullanın. Bir taşıma isteği gönderdiğinizde doğrulama otomatik olarak çağrılır. Bu işlemi yalnızca sonuçları önceden belirlemeniz gerektiğinde kullanın. Bu işlemi çalıştırmak için şunlar gerekir:

  • Kaynak kaynak grubunun adı
  • Hedef kaynak grubunun kaynak KIMLIĞI
  • Taşınacak her kaynağın kaynak KIMLIĞI
  • Hesabınız için erişim belirteci

Aşağıdaki isteği gönder:

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

İstek gövdesi ile:

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

İstek doğru biçimlendirildiğinden, işlem şunu döndürür:

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 durum kodu, doğrulama isteğinin kabul edildiğini gösterir, ancak taşıma işleminin başarılı olup olmayacağını henüz belirlemiştir. locationDeğer, uzun süre çalışan işlemin durumunu denetlemek için kullandığınız BIR URL içerir.

Durumu denetlemek için aşağıdaki isteği gönderin:

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

İşlem çalışmaya devam ederken, 202 durum kodunu almaya devam edersiniz. Yeniden denemeden önce değerde belirtilen saniye sayısını bekleyin retry-after . Taşıma işlemi başarıyla doğrulanırsa, 204 durum kodunu alırsınız. Taşıma doğrulaması başarısız olursa, şöyle bir hata iletisi alırsınız:

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

Taşı

Mevcut kaynakları başka bir kaynak grubuna veya aboneliğe taşımak için kaynakları taşıma işlemini kullanın.

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

İstek gövdesinde hedef kaynak grubunu ve taşınacak kaynakları belirtirsiniz.

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

Sık sorulan sorular

Soru: genellikle birkaç dakika süren kaynak taşıma işlemi, neredeyse bir saat boyunca çalışmaktadır. Yanlış bir sorun var mı?

Bir kaynağın taşınması, farklı aşamalara sahip karmaşık bir işlemdir. Taşımaya çalıştığınız kaynağın yalnızca kaynak sağlayıcısından fazlasını içerebilir. Kaynak sağlayıcıları arasındaki bağımlılıklar nedeniyle Azure Resource Manager işlemin tamamlanabilmesi için 4 saat izin verir. Bu zaman dilimi, kaynak sağlayıcılarına geçici sorunlardan kurtulmasına olanak tanır. Taşıma isteğiniz dört saatlik dönem içindeyse, işlem tamamlanmaya devam eder ve yine de başarılı olabilir. Tutarlılık sorunlarından kaçınmak için kaynak ve hedef kaynak grupları bu süre boyunca kilitlenir.

Soru: kaynak grupum neden kaynak taşıma sırasında dört saat boyunca kilitlidir?

Taşıma isteğine en fazla dört saat tamamlanmak için izin verilir. Taşınan kaynaklarda değişiklik yapılmasını engellemek için kaynak ve hedef kaynak gruplarının her ikisi de kaynak taşıma sırasında kilitlenir.

Taşıma isteğinde iki aşama vardır. İlk aşamada kaynak taşınır. İkinci aşamada, bildirimler, taşınan kaynağa bağımlı diğer kaynak sağlayıcılarına gönderilir. Bir kaynak sağlayıcısı her iki aşamada de başarısız olursa, kaynak grubu dört saatin tamamı için kilitlenebilir. İzin verilen süre boyunca başarısız olan adımı yeniden dener Kaynak Yöneticisi.

Bir kaynak dört saat içinde taşınamayacağını Kaynak Yöneticisi her iki kaynak grubunun da kilidini açar. Başarıyla taşınan kaynaklar hedef kaynak grubunda bulunur. Taşıyacağınız kaynaklar kaynak kaynak grubunun solununlardır.

Soru: kaynak taşıma sırasında kaynak ve hedef kaynak gruplarının kilitlenmesinin etkileri nelerdir?

Kilit, kaynak grubunu silmenizi, kaynak grubunda yeni bir kaynak oluşturmayı veya taşımayla ilgili kaynakların herhangi birini silmeyi önler.

Aşağıdaki görüntüde, bir kullanıcı devam eden bir taşımanın parçası olan bir kaynak grubunu silmeye çalıştığında Azure portal bir hata iletisi gösterilmektedir.

Silmeye çalışan hata iletisini taşı

Soru: "MissingMoveDependentResources" hata kodu ne anlama geliyor?

Bir kaynağı taşırken kaynağa ait bağımlı kaynakların hedef kaynak grupta veya abonelikte ya da taşıma işlemi isteğinde bulunması gerekir. Bağımlı bir kaynak bu gereksinimi karşılamıyorsa MissingMoveDependentResources hata kodunu alırsınız. Hata iletisinde, taşıma isteğine dahil olması gereken bağımlı kaynakla ilgili ayrıntılar bulunur.

Örneğin, bir sanal makineyi taşımak, yedi kaynak türünün üç farklı kaynak sağlayıcısı ile taşınmasını gerektirebilir. Bu kaynak sağlayıcıları ve türleri şunlardır:

  • Microsoft.Compute

    • virtualMachines
    • disklerinden
  • Microsoft.Network

    • NetworkInterfaces
    • Publicıpaddresses
    • networkSecurityGroups
    • virtualNetworks
  • Microsoft.Storage

    • storageAccounts

Diğer bir yaygın örnek, bir sanal ağın taşınmasını içerir. Bu sanal ağla ilişkili diğer birkaç kaynağı taşımanız gerekebilir. Taşıma isteği, genel IP adreslerinin, yol tablolarının, sanal ağ geçitlerinin, ağ güvenlik gruplarının ve başkalarının taşınmasını gerektirebilir.

Soru: "RequestDisallowedByPolicy" hata kodu ne anlama geliyor?

Kaynak Yöneticisi taşımayı denemeden önce taşıma isteğinizi doğrular. Bu doğrulama, taşımaya dahil olan kaynaklarda tanımlanan ilkelerin denetlenmesini içerir. Örneğin, bir anahtar kasasını taşımaya çalışıyorsanız ancak kuruluşunuzun hedef kaynak grubunda bir Anahtar Kasası oluşturulmasını reddetmek için bir ilke varsa, doğrulama başarısız olur ve taşıma engellenir. Döndürülen hata kodu Requestdisallowedbypolicy.

İlkeler hakkında daha fazla bilgi için bkz. Azure ilkesi nedir?.

Soru: Azure 'daki bazı kaynakları neden taşıyamıyorum?

Şu anda Azure desteği 'ndeki tüm kaynaklar hareket etmez. Taşımayı destekleyen kaynakların listesi için bkz. kaynaklar Için taşıma işlemi desteği.

Soru: tek bir işlemde kaç kaynak taşıyabilirim?

Mümkün olduğunda, büyük taşıma işlemlerini ayrı olarak bölün. Tek bir işlemde 800 'den fazla kaynak olduğunda hemen Kaynak Yöneticisi bir hata döndürür. Ancak, 800 'den az kaynak taşıma zaman aşımına uğramasından de başarısız olabilir.

Soru: bir kaynağın başarılı durumda olmadığı hatanın anlamı nedir?

Kaynak başarılı bir durumda olmadığından, bir kaynağın taşınamayacağını belirten bir hata iletisi aldığınızda, gerçekten taşımayı engelleyen bir bağımlı kaynak olabilir. Genellikle, hata kodu MoveCannotProceedWithResourcesNotInSucceededState' dir.

Kaynak veya hedef kaynak grubu bir sanal ağ içeriyorsa, sanal ağ için tüm bağımlı kaynakların durumları taşıma sırasında denetlenir. Denetim, bu kaynakları doğrudan ve sanal ağa dolaylı olarak bağlı olarak içerir. Bu kaynaklardan herhangi biri başarısız durumdaysa taşıma engellenir. Örneğin, sanal ağ kullanan bir sanal makine başarısız olduysa, taşıma engellenir. Sanal makine, taşınmakta olan kaynaklardan biri olmadığında ve taşıma için kaynak gruplarından birinde yer alsa bile taşıma engellenir.

Bu hatayı aldığınızda, iki seçeneğiniz vardır. Kaynaklarınızı sanal ağı olmayan bir kaynak grubuna taşıyın veya desteğe başvurun.

Sonraki adımlar

Hangi kaynakların taşınmasını desteklediğini bir liste için bkz. kaynaklar Için taşıma işlemi desteği.