Memindahkan sumber daya ke grup sumber daya atau langganan baru

Artikel ini memperlihatkan kepada Anda cara memindahkan sumber daya Azure ke langganan Azure lain atau grup sumber daya lain dalam langganan yang sama. Anda dapat menggunakan portal Azure, Azure PowerShell, Azure CLI, atau REST API untuk memindahkan sumber daya.

Grup sumber dan grup target dikunci selama operasi pemindahan dilakukan. Operasi tulis dan hapus diblokir pada grup sumber daya hingga pemindahan selesai. Kunci ini berarti Anda tidak dapat menambahkan, memperbarui, atau menghapus sumber daya di grup sumber daya. Bukan berarti sumber dayanya dibekukan. Misalnya, jika Anda memindahkan server logika Azure SQL, database-nya, dan sumber daya dependen lainnya ke grup sumber daya atau langganan baru, aplikasi yang menggunakan database tidak mengalami waktu henti. Aplikasi tersebut masih dapat membaca dan menulis ke database. Kunci dapat bertahan selama maksimal empat jam, tetapi sebagian besar pindahan selesai dalam waktu yang jauh lebih sedikit.

Jika pemindahan Anda memerlukan pengaturan sumber daya dependen baru, Anda akan mengalami gangguan dalam layanan tersebut hingga layanan telah dikonfigurasi ulang.

Memindahkan sumber daya hanya memindahkannya ke grup sumber daya atau langganan baru. Ini tidak mengubah lokasi sumber daya.

ID sumber daya yang diubah

Saat memindahkan sumber daya, Anda akan mengubah ID sumber dayanya. Format standar untuk ID sumber daya adalah /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. Saat memindahkan sumber daya ke grup sumber daya atau langganan baru, Anda mengubah satu atau beberapa nilai di jalur tersebut.

Jika Anda menggunakan ID sumber daya di mana saja, Anda harus mengubah nilai tersebut. Misalnya, jika Anda memiliki dasbor kustom di portal yang mereferensikan ID sumber daya, Anda harus memperbarui nilai tersebut. Cari skrip atau templat apa pun yang perlu diperbarui untuk ID sumber daya baru.

Daftar periksa sebelum memindahkan sumber daya

Ada beberapa langkah penting yang harus dilakukan sebelum memindahkan sumber daya. Dengan memverifikasi kondisi ini, Anda dapat menghindari kesalahan.

  1. Sumber daya yang ingin Anda pindahkan harus mendukung operasi pemindahan. Untuk daftar sumber daya yang mendukung pemindahan, lihat Dukungan operasi pemindahan untuk sumber daya.

  2. Beberapa layanan memiliki batasan atau persyaratan khusus saat memindahkan sumber daya. Jika Anda memindahkan salah satu layanan berikut, periksa panduan tersebut sebelum pindah.

  3. Jika Anda memindahkan sumber daya yang memiliki peran Azure yang ditetapkan langsung ke sumber daya (atau sumber daya anak), penetapan peran tidak dipindahkan dan menjadi yatim piatu. Setelah pindah, Anda harus membuat ulang penetapan peran. Akhirnya, penetapan peran yatim piatu secara otomatis dihapus, tetapi kami sarankan untuk menghapus penetapan peran sebelum pindah.

    Untuk informasi tentang cara mengelola penetapan peran, lihat Daftar penetapan peran Azure dan Menetapkan peran Azure.

  4. Langganan sumber dan tujuan harus aktif. Jika Anda mengalami masalah saat mengaktifkan akun yang telah dinonaktifkan, buat permintaan dukungan Azure. Pilih Manajemen Langganan untuk jenis masalah tersebut.

  5. Langganan sumber dan tujuan harus tersedia dengan penyewa Azure Active Directory yang sama. Untuk memeriksa apakah kedua langganan memiliki ID penyewa yang sama, gunakan Azure PowerShell atau Azure CLI.

    Untuk Azure PowerShell, gunakan:

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

    Untuk Azure CLI, gunakan:

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

    Jika ID penyewa untuk langganan sumber dan tujuan tidak sama, gunakan metode berikut untuk mendamaikan ID penyewa:

  6. Jika Anda mencoba memindahkan sumber daya ke atau dari mitra Penyedia Solusi Cloud (CSP), lihat Mentransfer langganan Azure antara pelanggan dan CSP.

  7. Langganan tujuan harus terdaftar di penyedia sumber dari sumber daya yang dipindahkan. Jika tidak, Anda menerima kesalahan yang menyatakan bahwa langganan tidak terdaftar sebagai jenis sumber daya. Anda mungkin melihat kesalahan ini saat memindahkan sumber daya ke langganan baru, tetapi langganan itu belum pernah digunakan dengan jenis sumber daya tersebut.

    Untuk PowerShell, gunakan perintah berikut untuk mendapatkan status pendaftaran:

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

    Untuk mendaftarkan penyedia sumber, gunakan:

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

    Untuk PowerShell, gunakan perintah berikut untuk mendapatkan status pendaftaran:

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

    Untuk mendaftarkan penyedia sumber, gunakan:

    az provider register --namespace Microsoft.Batch
    
  8. Akun yang memindahkan sumber daya harus memiliki setidaknya izin berikut:

    • Microsoft.Resources/subscriptions/resourceGroups/moveResources/action di grup sumber daya.
    • Microsoft.Resources/subscriptions/resourceGroups/write di grup sumber daya tujuan.
  9. Sebelum memindahkan sumber daya, periksa kuota langganan untuk langganan tempat sumber daya dipindahkan. Jika memindahkan sumber daya berarti langganan akan melebihi batasnya, Anda perlu meninjau apakah Anda dapat meminta peningkatan kuota. Untuk daftar batas dan cara meminta peningkatan, lihat Batas, kuota, dan hambatan langganan dan layanan Azure.

  10. Untuk berpindah lintas langganan, sumber daya dan sumber daya dependennya harus berada dalam grup sumber daya yang sama dan harus dipindahkan bersamaan. Misalnya, VM dengan disk terkelola akan mengharuskan VM dan disk yang dikelola untuk dipindahkan bersama-sama, bersama dengan sumber daya dependen lainnya.

    Jika Anda memindahkan sumber daya ke langganan baru, periksa apakah sumber daya memiliki sumber daya dependen, dan apakah sumber daya tersebut berada di grup sumber daya yang sama. Jika sumber daya tidak berada dalam grup sumber daya yang sama, periksa apakah sumber daya dapat digabungkan ke dalam grup sumber daya yang sama. Jika demikian, bawa semua sumber daya ini ke dalam grup sumber daya yang sama dengan menggunakan operasi pemindahan di seluruh grup sumber daya.

    Untuk informasi selengkapnya, lihat Skenario untuk berpindah lintas langganan.

Skenario untuk memindahkan lintas langganan

Memindahkan sumber daya dari satu langganan ke langganan lainnya adalah proses tiga langkah:

skenario pemindahan lintas langganan

Untuk tujuan ilustrasi, kami hanya memiliki satu sumber daya dependen.

  • Langkah 1: Jika sumber daya dependen didistribusikan di berbagai grup sumber daya, pindahkan sumber daya tersebut terlebih dahulu ke dalam satu grup sumber daya.
  • Langkah 2: Pindahkan sumber daya dan sumber daya dependen bersama-sama dari langganan sumber ke langganan target.
  • Langkah 3: Secara opsional, distribusikan kembali sumber daya dependen ke grup sumber daya yang berbeda dalam langganan target.

Gunakan portal

Untuk memindahkan sumber daya, pilih grup sumber daya yang berisi sumber daya tersebut.

Pilih sumber daya yang ingin dipindahkan. Untuk memindahkan semua sumber daya, pilih kotak centang di bagian atas daftar. Atau, pilih sumber daya satu per satu.

pilih sumber daya

Pilih tombol Pindahkan.

opsi pemindahan

Tombol ini memberi Anda tiga opsi:

Pilih apakah Anda memindahkan sumber daya ke grup sumber daya baru atau langganan baru.

Grup sumber daya sumber secara otomatis diatur. Pilih grup sumber daya tujuan. Jika Anda pindah ke langganan baru, tentukan juga langganan tersebut. Pilih Selanjutnya.

pilih grup sumber daya tujuan

Portal memvalidasi bahwa sumber daya dapat dipindahkan. Tunggu sampai pengoperasian selesai.

Memindahkan validasi

Ketika validasi berhasil diselesaikan, pilih Berikutnya.

Terima bahwa Anda perlu memperbarui skrip dan alat untuk sumber daya ini. Untuk mulai memindahkan sumber daya, pilih Pindahkan.

pilih tujuan

Setelah selesai, Anda diberi tahu tentang hasilnya.

lihat pindahkan hasil

Menggunakan Azure PowerShell

Memvalidasi

Untuk menguji skenario pemindahan Anda tanpa benar-benar memindahkan sumber daya, gunakan perintah Invoke-AzResourceAction . Gunakan operasi ini hanya ketika Anda perlu menentukan hasilnya. Untuk menjalankan operasi ini, Anda memerlukan:

  • ID sumber daya dari grup sumber daya sumber
  • ID sumber daya dari grup sumber daya target
  • ID sumber daya dari setiap sumber daya yang dipindahkan
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}' }  

Jika validasi lolos, Anda tidak melihat output.

Jika validasi gagal, Anda akan melihat pesan kesalahan yang menjelaskan mengapa sumber daya tidak dapat dipindahkan.

Memindahkan

Untuk memindahkan sumber daya yang sudah ada ke grup sumber daya atau langganan lain, gunakan perintah Move-AzResource. Contoh berikut menunjukkan cara memindahkan beberapa sumber daya ke grup sumber daya baru.

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

Untuk berpindah ke langganan baru, sertakan nilai untuk parameter DestinationSubscriptionId.

Gunakan Azure CLI

Memvalidasi

Untuk menguji skenario pemindahan Anda tanpa benar-benar memindahkan sumber daya, gunakan perintah az resource invoke-action . Gunakan perintah ini hanya ketika Anda perlu menentukan hasilnya. Untuk menjalankan operasi ini, Anda memerlukan:

  • ID sumber daya dari grup sumber daya sumber
  • ID sumber daya dari grup sumber daya target
  • ID sumber daya dari setiap sumber daya yang dipindahkan

Dalam badan permintaan, gunakan \" untuk menghindari kutipan ganda.

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

Jika validasi lolos, Anda akan melihat:

{} Finished .. 

Jika validasi gagal, Anda akan melihat pesan kesalahan yang menjelaskan mengapa sumber daya tidak dapat dipindahkan.

Memindahkan

Untuk memindahkan sumber daya yang sudah ada ke grup sumber daya atau langganan lain, gunakan perintah az resource move. Dalam parameter --ids, berikan daftar ID sumber daya yang dipindahkan yang dipisahkan oleh spasi.

Contoh berikut menunjukkan cara memindahkan beberapa sumber daya ke grup sumber daya baru. Ini berfungsi saat menggunakan Azure CLI di terminal 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

Contoh berikutnya menunjukkan cara menjalankan perintah yang sama di konsol 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

Untuk berpindah ke langganan baru, berikan parameter --destination-subscription-id.

Gunakan REST API

Memvalidasi

Validasi operasi pemindahan memungkinkan Anda menguji skenario pemindahan tanpa benar-benar memindahkan sumber daya. Operasi ini akan memeriksa apakah pemindahan akan berhasil atau tidak. Validasi secara otomatis dipanggil saat Anda mengirim permintaan pemindahan. Gunakan operasi ini hanya ketika Anda perlu menentukan hasilnya. Untuk menjalankan operasi ini, Anda memerlukan:

  • Nama grup sumber daya sumber
  • ID sumber daya dari grup sumber daya target
  • ID sumber daya dari setiap sumber daya yang dipindahkan
  • Token akses untuk akun Anda

Kirim permintaan berikut:

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

Dengan isi permintaan:

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

Jika permintaan diformat dengan benar, operasi akan mengembalikan:

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

Kode status 202 menunjukkan permintaan validasi diterima, tetapi belum ditentukan apakah operasi pemindahan akan berhasil. Nilai location berisi URL yang Anda gunakan untuk memeriksa status operasi yang berjalan lama.

Untuk memeriksa status, kirim permintaan berikut:

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

Saat operasi masih berjalan, Anda terus menerima kode status 202. Tunggu jumlah detik yang ditunjukkan dalam nilai retry-after sebelum mencoba lagi. Jika operasi pemindahan berhasil memvalidasi, Anda akan menerima kode status 204. Jika validasi pemindahan gagal, Anda menerima pesan kesalahan, seperti:

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

Memindahkan

Untuk memindahkan sumber daya yang sudah ada ke grup sumber daya atau langganan lain, gunakan operasi Pindahkan sumber daya.

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

Dalam isi permintaan, Anda menentukan grup sumber daya target dan sumber daya yang dipindahkan.

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

Tanya jawab umum

Pertanyaan: Operasi pemindahan sumber daya saya, yang biasanya memakan waktu beberapa menit, telah berjalan selama hampir satu jam. Apakah ada yang salah?

Memindahkan sumber daya adalah operasi kompleks yang memiliki fase yang berbeda. Ini dapat melibatkan lebih dari sekadar penyedia sumber daya untuk sumber daya yang Anda coba pindahkan. Karena ketergantungan antara penyedia sumber daya ini, Azure Resource Manager memungkinkan 4 jam agar operasi selesai. Periode waktu ini memberi penyedia sumber daya kesempatan untuk pulih dari masalah sementara. Jika permintaan pemindahan Anda dalam periode empat jam, operasi akan terus berusaha menyelesaikan dan mungkin tetap berhasil. Grup sumber daya sumber dan tujuan dikunci selama waktu ini untuk menghindari masalah konsistensi.

Pertanyaan: Mengapa grup sumber daya saya dikunci selama empat jam selama pemindahan sumber daya?

Permintaan pemindahan diperbolehkan maksimal empat jam sampai selesai. Untuk mencegah modifikasi pada sumber daya yang dipindahkan, grup sumber daya sumber dan tujuan dikunci selama pemindahan sumber daya.

Ada dua fase dalam permintaan pemindahan. Pada fase pertama, sumber daya dipindahkan. Pada fase kedua, pemberitahuan dikirim ke penyedia sumber daya lain yang bergantung pada sumber daya yang dipindahkan. Grup sumber daya dapat dikunci selama empat jam penuh ketika penyedia sumber daya gagal di dua fase. Selama waktu yang diizinkan, Resource Manager mencoba kembali langkah yang gagal.

Jika sumber daya tidak dapat dipindahkan dalam waktu empat jam, Resource Manager akan membuka kunci kedua grup sumber daya. Sumber daya yang berhasil dipindahkan berada di grup sumber daya tujuan. Sumber daya yang gagal berpindah ditinggalkan grup sumber daya sumbernya.

Pertanyaan: Apa implikasi dari grup sumber daya sumber dan sumber daya tujuan yang dikunci selama pemindahan sumber daya?

Penguncian mencegah Anda menghapus salah satu grup sumber daya, membuat sumber daya baru di salah satu grup sumber daya, atau menghapus salah satu sumber daya yang terlibat dalam pemindahan.

Gambar berikut ini memperlihatkan pesan kesalahan dari portal Azure saat pengguna mencoba menghapus grup sumber daya yang merupakan bagian dari langkah yang sedang berlangsung.

Pesan kesalahan pemindahan yang mencoba menghapus

Pertanyaan: Apa arti kode kesalahan "MissingMoveDependentResources"?

Saat Anda memindahkan sumber daya, sumber daya dependennya harus ada di grup sumber daya tujuan atau langganan, atau disertakan dalam permintaan pemindahan. Anda mendapatkan kode kesalahan MissingMoveDependentResources saat sumber daya dependen tidak memenuhi persyaratan ini. Pesan kesalahan memiliki detail tentang sumber daya dependen yang perlu disertakan dalam permintaan pemindahan.

Misalnya, memindahkan mesin virtual memerlukan pemindahan tujuh jenis sumber daya dengan tiga penyedia sumber daya yang berbeda. Penyedia dan jenis sumber daya tersebut adalah:

  • Microsoft.Compute

    • virtualMachines
    • disks
  • Microsoft.Network

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

    • storageAccounts

Contoh umum lainnya melibatkan pemindahan jaringan virtual. Anda mungkin harus memindahkan beberapa sumber daya lain yang terkait dengan jaringan virtual tersebut. Permintaan pemindahan bisa memerlukan pemindahan alamat IP publik, tabel rute, gateway jaringan virtual, grup keamanan jaringan, dan lainnya.

Pertanyaan: Apa arti kode kesalahan "RequestDisallowedByPolicy"?

Resource Manager memvalidasi permintaan pemindahan Anda sebelum mencoba pemindahan. Validasi ini mencakup kebijakan pengecekan yang ditentukan pada sumber daya yang terlibat dalam pemindahan. Misalnya, jika Anda mencoba memindahkan brankas kunci tetapi organisasi Anda memiliki kebijakan untuk menolak pembuatan brankas kunci dalam grup sumber daya target, validasi gagal, dan pemindahan diblokir. Kode kesalahan yang dikembalikan adalah RequestDisallowedByPolicy.

Untuk informasi selengkapnya tentang kebijakan, lihat Apa itu Azure Policy?.

Pertanyaan: Mengapa saya tidak bisa memindahkan beberapa sumber daya di Azure?

Saat ini, tidak semua sumber daya di Azure mendukung pemindahan. Untuk daftar sumber daya yang mendukung pemindahan, lihat Dukungan operasi pemindahan untuk sumber daya.

Pertanyaan: Berapa banyak sumber daya yang dapat saya pindahkan dalam satu operasi?

Jika memungkinkan, pecahkan pemindahan besar ke dalam operasi pemindahan terpisah. Resource Manager segera mengembalikan kesalahan ketika ada lebih dari 800 sumber daya dalam satu operasi. Namun, memindahkan kurang dari 800 sumber daya juga dapat gagal dengan waktu habis.

Pertanyaan: Apa arti kesalahan yang menyatakan bahwa sumber daya tidak dalam status berhasil?

Ketika Anda mendapatkan pesan kesalahan yang menunjukkan sumber daya tidak dapat dipindahkan karena tidak dalam status berhasil, itu mungkin sebenarnya merupakan sumber daya dependen yang memblokir pemindahan. Biasanya, kode galat adalah MoveCannotProceedWithResourcesNotInSucceededState.

Jika grup sumber daya sumber atau target berisi jaringan virtual, status dari semua sumber daya dependen untuk jaringan virtual diperiksa selama pemindahan. Pemeriksaan mencakup sumber daya tersebut secara langsung dan tidak langsung tergantung pada jaringan virtual. Jika salah satu sumber daya tersebut berstatus gagal, pemindahan diblokir. Misalnya, jika komputer virtual yang menggunakan jaringan virtual gagal, pemindahan diblokir. Langkah ini diblokir bahkan ketika komputer virtual bukan salah satu sumber daya yang dipindahkan dan tidak berada di salah satu grup sumber daya yang dipindahkan.

Ketika menerima kesalahan ini, Anda memiliki dua opsi. Pindahkan sumber daya Anda ke grup sumber daya yang tidak memiliki jaringan virtual, atau hubungi dukungan.

Langkah berikutnya

Untuk daftar sumber daya yang mendukung pemindahan, lihat Dukungan operasi pemindahan untuk sumber daya.