Topik ini menjelaskan persiapan yang diperlukan sebelum migrasi data.
Langkah 1: Unggah file daftar
File daftar HTTP/HTTPS mencakup dua jenis file: file manifest.json dan satu atau beberapa file example.csv.gz. File example.csv.gz adalah file daftar CSV terkompresi dengan ukuran maksimum 100 MB per file. File manifest.json mendefinisikan skema manifes dan serangkaian file CSV.
Buat file daftar CSV
Buat file daftar berformat CSV di mesin lokal Anda. Setiap baris merepresentasikan satu file, dipisahkan oleh line feed (\n), dan setiap file memiliki beberapa properti yang dipisahkan koma (,).
PentingKey dan Url wajib diisi; item lainnya bersifat opsional.
Setiap baris harus diakhiri dengan line feed. Jika tidak, tugas dapat terganggu akibat kegagalan penguraian CSV.
Item wajib
Nama
Wajib
Deskripsi
Catatan
Url
Ya
Data Online Migration menggunakan tautan ini untuk mengunduh konten file dengan permintaan GET dan untuk mendapatkan metadata file dengan permintaan HEAD.
CatatanPastikan bahwa Url dapat diakses melalui perintah seperti `curl --HEAD "$Url"` dan `curl --GET "$Url"`. Data Online Migration tidak mendukung pengalihan untuk `$Url`.
Item Url dan Key harus dikodekan. Jika tidak dikodekan dan mengandung karakter khusus, migrasi file mungkin gagal.
Item Url: Lakukan URL encoding pada URL yang dapat diakses oleh alat baris perintah seperti
curl(tanpa pengalihan).Prinsip pengkodean Key: Lakukan URL encoding pada nama objek yang diinginkan untuk file tersebut di OSS.
PentingSetelah mengkodekan item Url dan Key, pastikan hal-hal berikut. Jika tidak, migrasi file mungkin gagal, atau jalur file di tujuan tidak sesuai harapan Anda.
Tanda plus (+) dalam string asli dikodekan sebagai %2B.
Tanda persen (%) dalam string asli dikodekan sebagai %25.
Koma (,) dalam string asli dikodekan sebagai %2C.
Sebagai contoh, jika string aslinya adalah
a+b%c,d.file, maka string yang telah dikodekan seharusnyaa%2Bb%25c%2Cd.file.Key
Ya
Nama objek setelah migrasi adalah `awalan + nama file`.
Misalnya, Anda telah membuat file CSV bernama plain_example.csv yang belum dikodekan URL-nya. File tersebut hanya memiliki dua kolom: kolom pertama adalah Url, yang berisi URL yang dapat diakses langsung menggunakan perintah curl; kolom kedua adalah Key, yang merupakan nama objek yang diharapkan untuk file tersebut di OSS. Berikut contohnya:
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.json atau plain_example.csv karena aplikasi tersebut dapat menambahkan byte order mark (BOM) (0xefbbbf) pada tiga byte pertama file, yang dapat menyebabkan kesalahan penguraian di Data Online Migration. Di Linux atau macOS, jalankan perintah
od -c plain_example.csv | lessuntuk memeriksa apakah tiga byte pertama file mengandung tanda tersebut. Di Windows, gunakan aplikasi seperti Notepad++ atau Visual Studio Code untuk membuat atau mengedit file.Kode Python contoh berikut membaca plain_example.csv baris demi baris dan menghasilkan keluaran berupa hasil pengkodean ke file example.csv. Kode ini hanya sebagai referensi dan dapat dimodifikasi sesuai kebutuhan.
# -*- 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 hasil pengkodean URL. out_path = "example.csv" # Contoh CSV 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 terkodekan. fout.write(enc_url + "," + enc_key + "\n")Setelah menjalankan kode di atas, isi file example.csv adalah 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
Nama
Wajib
Catatan
Key
Ya
Nama objek setelah migrasi adalah `awalan + nama file`.
Url
Ya
Data Online Migration menggunakan tautan ini untuk mengunduh konten file dengan permintaan GET dan untuk mendapatkan metadata file dengan permintaan HEAD.
Size
Tidak
Ukuran file yang akan dimigrasikan, dalam satuan byte.
CatatanBidang ini digunakan untuk menghitung penggunaan penyimpanan file yang dimigrasikan. Jika bidang ini tidak ada, grafik penggunaan penyimpanan di konsol tidak akan tersedia.
CatatanUrutan item dalam contoh di atas tidak tetap dan harus sesuai dengan urutan item dalam bidang fileSchema di file manifest.json.
Kompres file CSV
Kompres file CSV menjadi file .csv.gz. Metode kompresi berikut tersedia:
Kompres satu file
Sebagai contoh, jika file bernama example.csv ada di direktori dir, jalankan perintah berikut untuk mengompresnya:
gzip -c example.csv > example.csv.gzCatatanSaat menjalankan perintah
gzipdi atas untuk mengompres file, file sumber tidak disimpan. Untuk menyimpan file sumber, jalankan perintahgzip -c <source_file> > <source_file>.gz.Setelah kompresi, file
.csv.gzdihasilkan.Kompres beberapa file
Sebagai contoh, jika tiga file bernama example1.csv, example2.csv, dan example3.csv ada di direktori dir, jalankan perintah berikut untuk mengompresnya:
gzip -r dirCatatanPerintah
gziptidak memaketkan direktori, melainkan mengompres setiap file di direktori yang ditentukan secara terpisah tanpa menyimpan file sumber yang bersesuaian.Setelah kompresi, tiga file bernama example1.csv.gz, example2.csv.gz, dan example3.csv.gz dihasilkan di direktori dir.
Buat file manifest.json
Anda dapat mengonfigurasi beberapa file CSV. Detailnya sebagai berikut:
fileFormat: Menentukan bahwa format file daftar adalah CSV.
fileSchema: Sesuai dengan item-item dalam file CSV. Perhatikan urutannya.
CatatanPastikan jumlah kolom dalam file CSV sama dengan jumlah bidang dalam konfigurasi ini. Layanan migrasi akan memeriksa konsistensinya.
files:
key: Lokasi file CSV di bucket.
MD5checksum: String MD5 heksadesimal 16 digit. Nilainya tidak peka huruf besar/kecil. Contoh: 91A76757B25C8BE78BC321DEEBA6A5AD. Jika nilai ini tidak ditentukan, tidak ada pemeriksaan yang dilakukan.
size: Ukuran file daftar.
Contoh berikut hanya sebagai referensi.
{ "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 yang telah Anda buat ke OSS atau AWS S3.
Unggah file manifest.json dan file daftar CSV terkompresi. Nama file daftar CSV harus sesuai dengan nama file CSV dalam file manifest.json.
Catat jalur file manifest.json. Anda harus menentukan lokasi manifes saat membuat alamat data sumber.
Langkah 2: Buat bucket tujuan
Buat bucket Object Storage Service (OSS) sebagai tujuan untuk menyimpan data yang dimigrasikan. Untuk informasi selengkapnya, lihat Buat bucket.
Langkah 3: Buat Pengguna RAM dan berikan izin kepada Pengguna RAM
Pengguna Resource Access Management (RAM) digunakan untuk menjalankan tugas migrasi data. Anda harus membuat peran RAM dan menjalankan tugas migrasi data sebagai Pengguna RAM. Disarankan untuk membuat Pengguna RAM dalam Akun Alibaba Cloud yang memiliki bucket OSS sumber atau tujuan.
Untuk informasi selengkapnya, lihat Buat Pengguna RAM dan berikan izin kepada Pengguna RAM.
Masuk ke konsol RAM dengan Akun Alibaba Cloud. Di halaman Pengguna, temukan Pengguna RAM yang telah Anda buat dan klik Add Permissions di kolom Actions.
Kebijakan sistem: AliyunOSSImportFullAccess. Kebijakan ini memberikan izin untuk mengelola Data Online Migration.
Kebijakan kustom: Kebijakan harus mencakup izin
ram:CreateRole,ram:CreatePolicy,ram:AttachPolicyToRole, danram:ListRoles.Untuk informasi selengkapnya tentang cara menyambungkan kebijakan kustom, lihat Buat kebijakan kustom. Kode contoh berikut memberikan contoh kebijakan kustom:
{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "ram:CreateRole", "ram:CreatePolicy", "ram:AttachPolicyToRole", "ram:ListRoles" ], "Resource":"*" } ] }
Langkah 4: Berikan izin pada bucket manifes
Lakukan operasi yang sesuai berdasarkan apakah bucket yang menyimpan daftar inventaris dimiliki oleh Akun Alibaba Cloud saat ini.
Bucket yang menyimpan daftar inventaris dimiliki oleh Akun Alibaba Cloud saat ini
Otorisasi otomatis
Disarankan untuk menyelesaikan otorisasi di Konsol Data Online Migration. Untuk informasi selengkapnya, lihat bagian "Langkah 2: Buat alamat data sumber" dalam topik Migrasi data.
Otorisasi manual
Berikan izin pada bucket yang menyimpan daftar inventaris
Di halaman Peran, temukan peran RAM yang telah dibuat dan klik Grant Permission di kolom Tindakan.
Kebijakan kustom: Sambungkan kebijakan kustom yang mencakup izin
oss:List*danoss:Get*ke peran RAM.
Untuk informasi selengkapnya tentang cara menyambungkan kebijakan kustom, lihat Buat kebijakan kustom. Kode contoh berikut memberikan contoh kebijakan kustom.
CatatanKebijakan berikut hanya sebagai referensi. Ganti <myInvBucket> dengan nama bucket yang menyimpan daftar inventaris.
Untuk informasi selengkapnya tentang kebijakan RAM untuk OSS, lihat Contoh umum kebijakan RAM.
PentingJika enkripsi sisi server menggunakan kunci yang dikelola oleh Key Management Service (SSE-KMS) dikonfigurasi untuk bucket yang menyimpan daftar inventaris, Anda harus menyambungkan kebijakan sistem AliyunKMSFullAccess ke peran RAM.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:List*", "oss:Get*" ], "Resource": [ "acs:oss:*:*:<myInvBucket>", "acs:oss:*:*:<myInvBucket>/*" ] } ] }
Bucket yang menyimpan daftar inventaris tidak dimiliki oleh Akun Alibaba Cloud saat ini
Berikan izin pada bucket yang menyimpan daftar inventaris
Masuk ke Konsol OSS dengan Akun Alibaba Cloud yang memiliki bucket yang menyimpan daftar inventaris.
Di panel navigasi sebelah kiri, klik Buckets. Di halaman Bucket, klik nama bucket yang menyimpan daftar inventaris.
Di panel navigasi sebelah kiri, pilih Permission Control > Bucket Policy.
Di tab Kebijakan Bucket, klik Tambah berdasarkan Sintaks. Di halaman yang muncul, klik Edit, masukkan kebijakan bucket kustom di editor kode, lalu klik Save.
Kebijakan kustom:
Berikan izin kepada peran RAM untuk mencantumkan dan membaca semua sumber daya di bucket yang menyimpan daftar inventaris.
CatatanKebijakan berikut hanya sebagai referensi. Ganti <otherInvBucket> dengan nama bucket yang menyimpan daftar inventaris, <myuid> dengan ID Akun Alibaba Cloud yang digunakan untuk masuk ke Konsol Data Online Migration, <otherUid> dengan yang memiliki bucket yang menyimpan daftar inventaris, dan <roleName> dengan yang telah Anda buat. Untuk informasi selengkapnya tentang kebijakan RAM untuk 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>:<othereInvBucket>/*" ] } ] }
2. Konfigurasi kebijakan untuk kunci kustom
Jika enkripsi sisi server menggunakan SSE-KMS dikonfigurasi untuk bucket yang menyimpan daftar inventaris, Anda harus menyambungkan kebijakan sistem AliyunKMSFullAccess ke peran RAM.
Jika kunci kustom KMS digunakan untuk mengenkripsi data di bucket yang menyimpan daftar inventaris, lakukan langkah-langkah berikut untuk mengonfigurasi kebijakan untuk kunci kustom tersebut:
Masuk ke konsol KMS dan temukan kunci kustom tersebut.
Di tab Key Policy halaman detail, klik Konfigurasi Kebijakan Kunci. Di panel Kebijakan Kunci, masukkan ARN peran RAM di bidang Cross-account User. Untuk informasi selengkapnya, lihat Konfigurasi kebijakan kunci.

Langkah 5: Berikan izin pada bucket tujuan
Lakukan operasi yang sesuai berdasarkan apakah bucket tujuan dimiliki oleh Akun Alibaba Cloud saat ini.
Bucket tujuan dimiliki oleh Akun Alibaba Cloud saat ini
Otorisasi otomatis
Disarankan untuk menggunakan otorisasi otomatis di konsol Data Online Migration. Untuk informasi selengkapnya, lihat bagian "Langkah 3: Buat alamat data tujuan" dalam topik Migrasi data.
Otorisasi manual
CatatanAnda dapat melakukan otorisasi manual dalam skenario berikut:
Anda ingin memberikan izin pada beberapa bucket sumber ke peran RAM untuk mengelola beberapa bucket sumber secara efektif.
Anda tidak ingin membuat lebih banyak peran RAM karena jumlah peran RAM dalam Akun Alibaba Cloud saat ini hampir mencapai batas maksimum.
Otorisasi otomatis tidak berlaku atau tidak dapat digunakan.
1. Buat peran RAM yang digunakan untuk migrasi data
Masuk ke konsol RAM tempat Pengguna RAM dibuat. Di halaman Peran, klik Create Role.
Jenis Prinsipal: Pilih Cloud Service.
Nama Prinsipal: Pilih Data Transport.
Role Name: Masukkan nama Peran RAM menggunakan huruf kecil.


2. Berikan izin pada bucket tujuan kepada peran RAM
Di halaman Peran, temukan peran RAM yang telah dibuat dan klik Berikan Izin di kolom Tindakan.
Kebijakan kustom: Sambungkan kebijakan kustom yang mencakup izin
oss:List*,oss:Get*,oss:Put*, danoss:AbortMultipartUpload*ke peran RAM.
Untuk informasi selengkapnya tentang cara menyambungkan kebijakan kustom, lihat Buat kebijakan kustom. Kode contoh berikut memberikan contoh kebijakan kustom:
CatatanKebijakan berikut hanya sebagai referensi. Ganti <myDestBucket> dengan nama bucket tujuan.
Untuk informasi selengkapnya tentang kebijakan RAM untuk OSS, lihat Contoh umum kebijakan RAM.
PentingJika enkripsi sisi server menggunakan kunci yang dikelola oleh Key Management Service (SSE-KMS) dikonfigurasi untuk bucket tujuan, Anda harus menyambungkan kebijakan sistem AliyunKMSFullAccess ke peran RAM.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:List*", "oss:Get*", "oss:Put*", "oss:AbortMultipartUpload" ], "Resource": [ "acs:oss:*:*:<myDestBucket>", "acs:oss:*:*:<myDestBucket>/*" ] } ] }
Bucket tujuan tidak dimiliki oleh Akun Alibaba Cloud saat ini
1. Buat peran RAM yang digunakan untuk migrasi data
Masuk ke konsol RAM tempat Pengguna RAM dibuat. Di halaman Peran, klik Create Role.
Jenis Prinsipal: Pilih Cloud Service.
Nama Prinsipal: Pilih Data Transport.
Role Name: Masukkan nama peran RAM menggunakan huruf kecil.


2. Berikan izin pada bucket tujuan kepada peran RAM
Jika Anda mengonfigurasi kebijakan bucket dengan menentukan pernyataan kebijakan untuk memberikan izin yang diperlukan kepada peran RAM, kebijakan bucket baru akan menimpa kebijakan bucket yang ada. Pastikan kebijakan bucket baru berisi konten kebijakan bucket yang ada. Jika tidak, otorisasi berdasarkan kebijakan bucket yang ada mungkin gagal.
Masuk ke Konsol OSS dengan Akun Alibaba Cloud yang memiliki bucket tujuan.
Di panel navigasi sebelah kiri, klik Buckets. Di halaman Bucket, klik nama bucket tujuan.
Di panel sebelah kiri halaman detail bucket, pilih Permission Control > Bucket Policy.
Di tab Kebijakan Bucket, klik Add by Syntax lalu klik Edit. Di editor kode, masukkan kebijakan bucket kustom. Kemudian, klik Save.
Berikan izin kepada peran RAM untuk mencantumkan, membaca, dan menghapus objek di bucket tujuan serta menulis objek ke bucket tujuan.
Kebijakan berikut hanya sebagai referensi. Ganti <otherDestBucket> dengan the name of the destination bucket, <otherUid> dengan ID Akun Alibaba Cloud yang memiliki bucket tujuan, <myUid> dengan the ID of the Alibaba Cloud account that is used to log on to the Data Online Migration console, dan <roleName> dengan nama peran RAM yang telah Anda buat. Untuk informasi selengkapnya tentang kebijakan RAM untuk OSS, lihat 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. Konfigurasi kebijakan untuk kunci kustom
Jika SSE-KMS dikonfigurasi untuk bucket tujuan, Anda harus menyambungkan kebijakan sistem AliyunKMSFullAccess ke peran RAM.
Jika kunci kustom KMS digunakan untuk mengenkripsi data di bucket tujuan, lakukan langkah-langkah berikut untuk mengonfigurasi kebijakan untuk kunci kustom tersebut.
Masuk ke konsol KMS dan temukan kunci kustom tersebut.
Di tab Key Policy halaman detail, klik Konfigurasi Kebijakan Kunci. Di panel Kebijakan Kunci, masukkan ARN peran RAM di bidang Cross-account User. Untuk informasi selengkapnya, lihat Konfigurasi kebijakan kunci.
