Lengkapi langkah-langkah persiapan berikut sebelum memulai tugas migrasi data.
Langkah 1: Unggah file daftar
File daftar HTTP/HTTPS terdiri dari dua komponen: file manifest.json yang mendefinisikan skema, dan satu atau beberapa file .csv.gz yang berisi daftar file aktual. Setiap file .csv.gz tidak boleh melebihi 100 MB.
Buat file daftar CSV
Buat file daftar dalam format CSV di mesin lokal Anda. Setiap baris merepresentasikan satu file. Baris dipisahkan oleh line feed (
\n), dan kolom dalam setiap baris dipisahkan oleh koma (,).PentingKey dan Url wajib diisi. Semua bidang lainnya opsional.
Setiap baris harus diakhiri dengan line feed. Ketidakhadiran line feed menyebabkan kegagalan parsing CSV yang mengganggu tugas migrasi.
Item wajib
Name
Required
Description
Notes
Url
Yes
Data Online Migration menggunakan URL ini untuk mengunduh konten file (permintaan GET) dan mengambil metadata file (permintaan HEAD).
CatatanUrl harus dapat diakses melalui perintah seperti
curl --HEAD "$Url"dancurl --GET "$Url". Data Online Migration tidak mendukung pengalihan URL (URL redirection).Kedua Url dan Key harus di-encode dalam bentuk URL jika mengandung karakter khusus. Tanpa encoding, migrasi mungkin gagal.
Url: Lakukan URL-encoding pada URL agar tetap dapat diakses oleh alat command-line seperti
curl(tanpa pengalihan).Key: Lakukan URL-encoding pada nama objek yang dimaksudkan untuk file tersebut di OSS.
PentingSetelah encoding, pastikan hal-hal berikut. Jika tidak, migrasi mungkin gagal atau jalur file di tujuan berbeda dari yang Anda harapkan.
Tanda plus (+) dalam string asli di-encode sebagai %2B.
Tanda persen (%) dalam string asli di-encode sebagai %25.
Koma (,) dalam string asli di-encode sebagai %2C.
Sebagai contoh, string asli
a+b%c,d.filedi-encode menjadia%2Bb%25c%2Cd.file.Key
Yes
Nama objek di OSS setelah migrasi. Nama akhirnya adalah
prefix + nilai Key. Misalnya, jika prefix-nya adalahbackup/dan Key-nya adalahimages/photo.jpg, objek tersebut disimpan sebagaibackup/images/photo.jpg.Contoh berikut menunjukkan file CSV teks biasa (tidak di-encode) bernama
plain_example.csvdengan dua kolom:UrldanKey. URL dapat diakses langsung menggunakan perintahcurl, dan nilaiKeymerupakan nama objek yang dimaksudkan di OSS.https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/1354977961/p486238.jpg,assets/img/zh-CN/1354977961/p486238.jpg https://www.example-fake1.com/url-that-can-be-accessed-only-after-encoding/123.png,url-that-can-be-accessed-only-after-encoding/123.png https://www.example-fake2.com/url-that-can-be-accessed-without-encoding/123.png,url-that-can-be-accessed-without-encoding/123.png https://www.example-fake3.com/Chinese/Japanese/Korean/123.png,Chinese/Japanese/Korean/123.pngPentingJangan gunakan aplikasi Notepad bawaan Windows untuk mengedit
manifest.jsonatauplain_example.csv. Notepad dapat menambahkan byte order mark (BOM) (0xefbbbf) pada tiga byte pertama file, yang menyebabkan error parsing di Data Online Migration. Di Linux atau macOS, jalankanod -c plain_example.csv | lessuntuk memeriksa keberadaan BOM. Di Windows, gunakan Notepad++ atau Visual Studio Code sebagai gantinya.Jika URL atau key Anda mengandung karakter khusus, lakukan encoding sebelum digunakan. Skrip Python berikut membaca
plain_example.csvbaris demi baris dan menulis output yang telah di-encode keexample.csv.# -*- coding: utf-8 -*- import sys if sys.version_info.major == 3: from urllib.parse import quote_plus else: from urllib import quote_plus reload(sys) sys.setdefaultencoding("utf-8") # Jalur file CSV sumber. src_path = "plain_example.csv" # Jalur file yang telah di-encode. out_path = "example.csv" # File CSV contoh hanya berisi dua kolom: url dan key. with open(src_path) as fin, open(out_path, "w") as fout: for line in fin: items = line.strip().split(",") url, key = items[0], items[1] enc_url = quote_plus(url.encode("utf-8")) enc_key = quote_plus(key.encode("utf-8")) # Variabel enc_url dan enc_key berada dalam format yang telah di-encode. fout.write(enc_url + "," + enc_key + "\n")Setelah menjalankan skrip,
example.csvberisi konten yang telah di-encode sebagai berikut:https%3A%2F%2Fhelp-static-aliyun-doc.aliyuncs.com%2Fassets%2Fimg%2Fzh-CN%2F1354977961%2Fp486238.jpg,assets%2Fimg%2Fzh-CN%2F1354977961%2Fp486238.jpg https%3A%2F%2Fwww.example-fake1.com%2Furl-that-can-be-accessed-only-after-encoding%2F123.png,url-that-can-be-accessed-only-after-encoding%2F123.png https%3A%2F%2Fwww.example-fake2.com%2Furl-that-can-be-accessed-without-encoding%2F123.png,url-that-can-be-accessed-without-encoding%2F123.png https%3A%2F%2Fwww.example-fake3.com%2FChinese%2FJapanese%2FKorean%2F123.png,Chinese%2FJapanese%2FKorean%2F123.pngSemua item
Name
Required
Notes
Key
Yes
Nama objek di OSS setelah migrasi. Nama akhirnya adalah
prefix + nilai Key.Url
Yes
Data Online Migration menggunakan URL ini untuk mengunduh konten file (permintaan GET) dan mengambil metadata file (permintaan HEAD).
Size
No
Ukuran file yang akan dimigrasikan, dalam byte.
CatatanBidang ini digunakan untuk menghitung penggunaan penyimpanan file yang dimigrasikan. Jika dihilangkan, grafik penggunaan penyimpanan di Konsol tidak akan tersedia.
CatatanUrutan item tidak tetap, tetapi harus sesuai dengan urutan bidang dalam bidang fileSchema di
manifest.json.
Kompres file CSV
Kompres setiap file CSV menjadi file
.csv.gzmenggunakan gzip.Kompres satu file
Untuk mengompres satu file bernama
example.csv, jalankan:gzip -c example.csv > example.csv.gzCatatanPerintah
gziptanpa flag-cakan menghapus file sumber setelah kompresi. Untuk menyimpan file sumber, gunakangzip -c <source_file> > <source_file>.gz.Ini menghasilkan file
.csv.gz.Kompres beberapa file
Untuk mengompres semua file CSV dalam direktori (misalnya,
example1.csv,example2.csv, danexample3.csvdalam direktoridir), jalankan:gzip -r dirCatatanPerintah
gzipmengompres setiap file dalam direktori secara terpisah dan tidak mengemas direktori itu sendiri. File sumber tidak disimpan.Ini menghasilkan
example1.csv.gz,example2.csv.gz, danexample3.csv.gzdalam direktoridir.
Buat file manifest.json
File
manifest.jsonmendefinisikan skema dan mereferensikan semua file daftar CSV. Konfigurasikan bidang-bidang berikut:fileFormat: Atur keCSV.fileSchema: Menampilkan nama kolom dalam file CSV, dalam urutan yang sama dengan kolom-kolom tersebut.CatatanJumlah kolom dalam file CSV harus sesuai dengan jumlah bidang dalam
fileSchema. Layanan migrasi memvalidasi hal ini saat pembuatan tugas.files: Array referensi file CSV. Setiap entri mencakup:key: Jalur ke file.csv.gzdi bucket.MD5checksum: String MD5 heksadesimal 16 digit (tidak peka huruf besar/kecil). Contoh:91A76757B25C8BE78BC321DEEBA6A5AD. Biarkan kosong untuk melewati pemeriksaan checksum.size: Ukuran file.csv.gz.
Contoh:
{ "fileFormat":"CSV", "fileSchema":"Url, Key", "files":[{ "key":"dir/example1.csv.gz", "MD5checksum":"", "size":0 },{ "key":"dir/example2.csv.gz", "MD5checksum":"", "size":0 }] }Unggah file manifes ke OSS atau AWS S3.
Unggah
manifest.jsondan semua file.csv.gz. Nama file di bucket harus sesuai dengan nama file yang direferensikan dimanifest.json.Catat jalur ke
manifest.json. Anda perlu menentukan jalur ini saat membuat alamat data sumber.
Langkah 2: Buat bucket tujuan
Buat bucket tujuan untuk menyimpan data yang dimigrasikan. Untuk informasi selengkapnya, lihat Buat bucket.
Langkah 3: Buat Pengguna RAM dan berikan izin
-
Anda harus menggunakan Pengguna RAM ini untuk membuat role dan menjalankan tugas migrasi. Kami menyarankan Anda membuat Pengguna RAM ini di bawah Akun Alibaba Cloud yang memiliki bucket sumber atau tujuan.
-
Untuk membuat Pengguna RAM, lihat Panduan cepat: Buat Pengguna RAM dan berikan izin.
Login ke Konsol RAM dengan Akun Alibaba Cloud Anda. Di halaman Users, temukan Pengguna RAM yang telah Anda buat dan klik Add Permissions di kolom Actions.
-
Kebijakan sistem: Izin untuk mengelola Layanan Migrasi Online (AliyunOSSImportFullAccess).
-
Kebijakan kustom: Kebijakan ini harus mencakup izin
ram:CreateRole,ram:CreatePolicy,ram:AttachPolicyToRole, danram:ListRoles.Untuk informasi selengkapnya tentang cara mengelola izin, lihat Buat kebijakan kustom. Berikut adalah contoh kebijakan:
{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "ram:CreateRole", "ram:CreatePolicy", "ram:AttachPolicyToRole", "ram:ListRoles" ], "Resource":"*" } ] }
Langkah 4: Berikan izin pada bucket manifes
Instruksi berbeda tergantung apakah bucket inventaris milik akun Anda.
Bucket inventaris di akun Anda
-
Otorisasi satu klik
Kami menyarankan menggunakan fitur otorisasi satu klik di Konsol Data Online Migration. Anda dapat menemukan opsi ini di bawah Migration Implementation > Step 2 > Authorize List Role.
-
Otorisasi manual
Berikan izin bucket inventaris
Di halaman Roles, temukan Peran RAM yang telah Anda buat dan klik Add Permissions di kolom Actions.
-
Kebijakan kustom: Kebijakan ini harus mencakup izin
oss:List*danoss:Get*.
Untuk informasi selengkapnya tentang cara membuat kebijakan kustom, lihat Buat kebijakan kustom. Kode berikut memberikan contoh kebijakan:
CatatanIni adalah contoh kebijakan. Ganti <myInvBucket> dengan nama bucket inventaris Anda.
Untuk informasi selengkapnya tentang kebijakan izin OSS, lihat Contoh umum kebijakan RAM.
PentingJika bucket inventaris berisi objek yang dienkripsi dengan KMS, Anda juga harus menyambungkan kebijakan sistem AliyunKMSFullAccess ke Peran RAM tersebut.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:List*", "oss:Get*" ], "Resource": [ "acs:oss:*:*:<myInvBucket>", "acs:oss:*:*:<myInvBucket>/*" ] } ] } -
Bucket inventaris di akun lain
Berikan izin bucket inventaris
-
Login ke Konsol OSS dengan Akun Alibaba Cloud yang memiliki bucket inventaris.
-
Di panel navigasi kiri, klik Buckets lalu klik nama bucket inventaris.
-
Di panel navigasi kiri, pilih Permission Control > Bucket Policy.
-
Di tab Add by Syntax, klik Edit dan tambahkan kebijakan bucket berikut.
-
Kebijakan kustom:
Berikan izin Peran RAM untuk mendaftar dan membaca semua sumber daya di bucket.
CatatanIni adalah contoh kebijakan. Ganti placeholder dengan nilai aktual Anda: <otherInvBucket> dengan nama bucket inventaris, <myuid> dengan ID akun Alibaba Cloud dari akun yang digunakan untuk mengakses Konsol Data Online Migration, <otherUid> dengan UID of the Alibaba Cloud account pemilik bucket inventaris, dan <roleName> dengan name of the role yang telah Anda buat. Untuk informasi selengkapnya tentang kebijakan izin OSS, lihat Contoh umum kebijakan RAM.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:List*", "oss:Get*" ], "Principal": [ "arn:sts::<myUid>:assumed-role/<roleName>/*" ], "Resource": [ "acs:oss:*:<otherUid>:<otherInvBucket>", "acs:oss:*:<otherUid>:<otherInvBucket>/*" ] } ] }
2. Berikan izin KMS
-
Jika bucket inventaris berisi objek yang dienkripsi dengan KMS, Anda juga harus menyambungkan kebijakan sistem AliyunKMSFullAccess ke Peran RAM tersebut.
-
Jika objek di bucket inventaris dienkripsi dengan kunci yang dikelola pelanggan, berikan akses Peran RAM ke kunci tersebut dengan mengikuti langkah-langkah berikut:
-
Login ke Konsol Layanan Manajemen Kunci dan temukan kuncinya.
-
Atur Key Policy, pilih Users from other accounts, dan masukkan ARN principal. Untuk informasi selengkapnya, lihat Atur kebijakan kunci. Klik Key Policy. Di panel yang muncul, konfigurasikan Administrators dan Users dengan mencari dan memilih berdasarkan nama Pengguna RAM atau Peran RAM. Di bagian Users from other accounts, masukkan ARN principal dalam format
acs:ram::<userId>:role/<ramrole>atauacs:ram::<userId>:user/<ramuser>. Klik Add Principal ARN untuk menambahkan beberapa ARN.
-
Langkah 5: Berikan izin pada bucket tujuan
Ikuti langkah-langkah yang sesuai dengan kepemilikan bucket tujuan Anda.
Tujuan di akun yang sama
-
Otorisasi otomatis
Gunakan otorisasi role otomatis di Konsol Data Online Migration: Migration Implementation > Step 3 > Authorize Role.
-
Otorisasi manual
CatatanGunakan otorisasi manual ketika:
-
Anda ingin satu Peran RAM mengelola beberapa bucket sumber.
-
Akun Anda hampir mencapai batas jumlah Peran RAM.
-
Otorisasi otomatis tidak sesuai atau tidak tersedia untuk kasus penggunaan Anda.
1. Buat Peran RAM
Login ke Konsol RAM, buka halaman Roles, lalu klik Create Role.
-
Untuk Alibaba Cloud Service, pilih Alibaba Cloud Service.
-
Untuk Data Transport, pilih Data Transport.
-
Masukkan Role Name. Nama harus menggunakan huruf kecil semua.
Sebagai contoh, masukkan
role-test. Nama role dapat memiliki panjang hingga 64 karakter dan dapat berisi huruf, angka, tanda hubung (-), dan titik (.). Setelah memasukkan nama, klik OK.2. Berikan izin kepada Peran RAM
Di halaman Roles, temukan Peran RAM tersebut dan klik Add Permissions di kolom Actions.
-
Buat dan sambungkan kebijakan kustom dengan izin berikut:
oss:List*,oss:Get*,oss:Put*, danoss:AbortMultipartUpload.
Buat kebijakan kustom. Contoh kebijakan:
CatatanGanti <myDestBucket> dengan nama bucket tujuan Anda.
PentingJika bucket tujuan menggunakan enkripsi SSE-KMS, Anda juga harus menyambungkan kebijakan sistem AliyunKMSFullAccess ke Peran RAM tersebut.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:List*", "oss:Get*", "oss:Put*", "oss:AbortMultipartUpload" ], "Resource": [ "acs:oss:*:*:<myDestBucket>", "acs:oss:*:*:<myDestBucket>/*" ] } ] } -
Tujuan di akun berbeda
1. Buat Peran RAM
Di Akun Alibaba Cloud yang digunakan untuk migrasi, login ke Konsol RAM, buka halaman Roles, lalu klik Create Role.
-
Untuk Alibaba Cloud Service, pilih Alibaba Cloud Service.
-
Untuk Data Transport, pilih Data Transport.
-
Masukkan Role Name. Nama harus menggunakan huruf kecil semua.
Sebagai contoh, masukkan role-test. Nama role dapat memiliki panjang hingga 64 karakter dan dapat berisi huruf, angka, tanda hubung (-), dan titik (.). Setelah memasukkan nama, klik OK.
2. Otorisasi bucket tujuan
Bucket Policy baru akan menimpa yang sudah ada. Sertakan semua pernyataan sebelumnya untuk mempertahankan izin yang sudah ada.
-
Menggunakan Akun Alibaba Cloud yang memiliki bucket tujuan, login ke Konsol OSS.
-
Di panel navigasi kiri, klik Buckets. Di halaman Buckets, klik nama bucket tujuan.
-
Di panel navigasi kiri, pilih Permission Control > Bucket Policy.
-
Di tab Add by Syntax, klik Edit untuk menentukan Bucket Policy kustom.
-
Berikan izin Peran RAM untuk mendaftar, membaca, dan menulis semua objek di bucket.
-
Ganti placeholder berikut: <otherDestBucket> dengan name of the destination bucket, <otherUid> dengan UID of the Alibaba Cloud account yang memiliki bucket tujuan, <myUid> dengan UID of the Alibaba Cloud account for the migration console, dan <roleName> dengan name of the role yang dibuat di atas. Contoh umum kebijakan RAM.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:List*",
"oss:Get*",
"oss:Put*",
"oss:AbortMultipartUpload"
],
"Principal": [
"arn:sts::<myUid>:assumed-role/<roleName>/*"
],
"Resource": [
"acs:oss:*:<otherUid>:<otherDestBucket>",
"acs:oss:*:<otherUid>:<otherDestBucket>/*"
]
}
]
}
3. Otorisasi KMS
-
Jika bucket tujuan menggunakan enkripsi SSE-KMS, Anda juga harus menyambungkan kebijakan sistem AliyunKMSFullAccess ke Peran RAM di akun yang digunakan untuk migrasi.
-
Jika bucket tujuan menggunakan kunci KMS kustom, berikan akses Peran RAM ke kunci tersebut:
-
Login ke Konsol KMS dan temukan kuncinya.
-
Konfigurasikan key policy. Pilih Users of Other Accounts dan masukkan ARN principal yang berwenang. Konfigurasikan kebijakan kunci.
Di kotak dialog Key Policy, konfigurasikan principal berwenang berikut:
-
Key administrators: Masukkan nama Pengguna RAM atau Peran RAM untuk mencari dan menambahkannya.
-
Key users: Masukkan nama Pengguna RAM atau Peran RAM untuk mencari dan menambahkan.
-
Key users of other accounts: Masukkan ARN principal yang berwenang dalam format
acs:ram::<userId>:role/<ramrole>atauacs:ram::<userId>:user/<ramuser>, lalu klik Add ARN of Key User of Other Accounts untuk menambahkan beberapa entri.
-
-