Salin data dari Amazon S3 ke Azure Storage dengan menggunakan AzCopy
AzCopy adalah utilitas baris perintah yang dapat Anda gunakan untuk menyalin gumpalan atau file ke atau dari akun penyimpanan. Artikel ini membantu Anda menyalin objek, direktori, dan bucket dari Amazon Web Services (AWS) S3 ke Azure Blob Storage dengan menggunakan AzCopy.
Catatan
AzCopy mendukung URL gaya yang dihosting virtual standar atau gaya jalur yang ditentukan oleh AWS. Sebagai contoh: https://bucket.s3.amazonaws.com
atau https://s3.amazonaws.com/bucket
.
Pilih bagaimana Anda akan memberikan kredensial otorisasi
Untuk mengotorisasi dengan Azure Storage, gunakan ID Microsoft Entra atau token Tanda Tangan Akses Bersama (SAS).
Untuk mengotorisasi dengan AWS S3, gunakan kunci akses AWS dan kunci akses rahasia.
Otorisasi dengan Azure Storage
Lihat artikel Memulai AzCopy untuk mengunduh AzCopy, dan pilih cara Anda memberikan kredensial otorisasi ke layanan penyimpanan.
Catatan
Contoh dalam artikel ini mengasumsikan bahwa Anda telah mengautentikasi identitas Anda dengan menggunakan perintah AzCopy login
. AzCopy kemudian menggunakan akun Microsoft Entra Anda untuk mengotorisasi akses ke data di penyimpanan Blob.
Jika Anda lebih memilih menggunakan token SAS untuk otorisasi akses ke data blob, Anda dapat menambahkan token tersebut ke URL sumber daya di setiap perintah AzCopy.
Misalnya: https://mystorageaccount.blob.core.windows.net/mycontainer?<SAS-token>
.
Otorisasi dengan AWS S3
Kumpulkan kunci akses AWS dan kunci akses rahasia Anda, lalu atur variabel lingkungan ini:
Sistem operasi | Perintah |
---|---|
Windows | PowerShell:$env:AWS_ACCESS_KEY_ID=<access-key> $env:AWS_SECRET_ACCESS_KEY=<secret-access-key> Di perintah gunakan: set AWS_ACCESS_KEY_ID=<access-key> set AWS_SECRET_ACCESS_KEY=<secret-access-key> |
Linux | export AWS_ACCESS_KEY_ID=<access-key> export AWS_SECRET_ACCESS_KEY=<secret-access-key> |
macOS | export AWS_ACCESS_KEY_ID=<access-key> export AWS_SECRET_ACCESS_KEY=<secret-access-key> |
Kredensial ini digunakan untuk menghasilkan URL yang telah ditandatangani sebelumnya yang digunakan untuk menyalin objek.
Menyalin objek, direktori, dan wadah
AzCopy menggunakan API Put Block From URL, sehingga data disalin langsung antara AWS S3 dan server penyimpanan. Operasi salin ini tidak menggunakan bandwidth jaringan komputer Anda.
Tip
Contoh dalam bagian ini mengapit argumen jalur dengan tanda kutip tunggal (''). Gunakan tanda kutip tunggal di semua shell perintah kecuali Windows Command Shell (cmd.exe). Jika Anda menggunakan Windows Command Shell (cmd.exe), sertakan argumen jalur dengan tanda kutip ganda ("") dan bukan tanda kutip tunggal ('').
Contoh-contoh ini juga bekerja dengan akun yang memiliki namespace hierarkis. Akses multiprotokol pada Data Lake Storage memungkinkan Anda menggunakan sintaks URL yang sama (blob.core.windows.net
) pada akun tersebut.
Menyalin objek
Menggunakan sintaks URL yang sama (blob.core.windows.net
) untuk akun yang memiliki namespace hierarkis.
Sintaks
azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<object-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'
Contoh
azcopy copy 'https://s3.amazonaws.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'
Catatan
Contoh dalam artikel ini menggunakan URL gaya jalur untuk bucket AWS S3 (Misalnya: http://s3.amazonaws.com/<bucket-name>
).
Anda juga dapat menggunakan URL gaya virtual yang dihosting juga (Misalnya: http://bucket.s3.amazonaws.com
).
Untuk mempelajari lebih lanjut tentang hosting virtual ember, lihat Hosting Virtual Bucket.
Menyalin direktori
Menggunakan sintaks URL yang sama (blob.core.windows.net
) untuk akun yang memiliki namespace hierarkis.
Sintaks
azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true
Contoh
azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Catatan
Contoh ini menambahkan bendera --recursive
untuk menyalin file di semua subdirektori.
Menyalin konten direktori
Anda dapat menyalin konten direktori tanpa menyalin direktori yang memuatnya dengan menggunakan simbol kartubebas (*).
Sintaks
azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>/*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true
Contoh
azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory/*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Menyalin wadah
Menggunakan sintaks URL yang sama (blob.core.windows.net
) untuk akun yang memiliki namespace hierarkis.
Sintaks
azcopy copy 'https://s3.amazonaws.com/<bucket-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>' --recursive=true
Contoh
azcopy copy 'https://s3.amazonaws.com/mybucket' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive=true
Menyalin semua bucket di semua wilayah
Menggunakan sintaks URL yang sama (blob.core.windows.net
) untuk akun yang memiliki namespace hierarkis.
Sintaks
azcopy copy 'https://s3.amazonaws.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Contoh
azcopy copy 'https://s3.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Menyalin semua bucket di wilayah S3 tertentu
Menggunakan sintaks URL yang sama (blob.core.windows.net
) untuk akun yang memiliki namespace hierarkis.
Sintaks
azcopy copy 'https://s3-<region-name>.amazonaws.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Contoh
azcopy copy 'https://s3-rds.eu-north-1.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Menangani perbedaan dalam aturan penamaan objek
AWS S3 memiliki sekumpulan konvensi penamaan yang berbeda untuk nama bucket dibandingkan dengan wadah blob Azure. Anda dapat membaca tentang semua itu di sini. Jika Anda memilih untuk menyalin sekelompok wadah ke akun penyimpanan Azure, operasi salin mungkin gagal karena perbedaan penamaan.
AzCopy menangani dua masalah paling umum yang dapat muncul; keranjang yang berisi titik dan keranjang yang berisi tanda hubung yang berurutan. Nama keranjang AWS S3 dapat berisi titik dan tanda hubung yang berurutan, tetapi penampung di Azure tidak bisa. AzCopy mengganti tanda titik dengan tanda hubung dan tanda hubung berturut-turut dengan angka yang menunjukkan jumlah tanda hubung berturut-turut (Misalnya: wadah bernama my----bucket
menjadi my-4-bucket
.
Juga, ketika AzCopy menyalin file, ia memeriksa penamaan tabrakan dan upaya untuk menyelesaikannya. Misalnya, jika ada bucket dengan nama bucket-name
dan bucket.name
, AzCopy menyelesaikan bucket bernama bucket.name
pertama ke bucket-name
dan kemudian ke bucket-name-2
.
Menangani perbedaan dalam metadata objek
AWS S3 dan Azure mengizinkan set karakter yang berbeda dalam nama kunci objek. Anda dapat membaca tentang karakter yang digunakan AWS S3 di sini. Di sisi Azure, kunci objek blob mematuhi aturan penamaan untuk pengidentifikasi C#.
Sebagai bagian dari perintah AzCopycopy
, Anda dapat memberikan nilai untuk opsional s2s-handle-invalid-metadata
bendera yang menentukan cara Anda ingin menangani file tempat metadata file berisi nama kunci yang tidak kompatibel. Tabel berikut ini menguraikan setiap nilai bendera.
Nilai bendera | Deskripsi |
---|---|
ExcludeIfInvalid | (Opsi default) Metadata tidak disertakan dalam objek yang ditransfer. AzCopy mencatat peringatan. |
FailIfInvalid | Objek tidak disalin. AzCopy mencatat kesalahan dan menyertakan kesalahan tersebut dalam hitungan gagal yang muncul dalam ringkasan transfer. |
RenameIfInvalid | AzCopy menyelesaikan kunci metadata yang tidak valid, dan menyalin objek ke Azure menggunakan pasangan nilai kunci metadata yang diselesaikan. Untuk mempelajari dengan tepat langkah apa yang digunakan oleh AzCopy untuk mengganti nama kunci objek, lihat bagian Bagaimana AzCopy mengganti nama kunci objek di bawah ini. Jika AzCopy tidak dapat mengganti nama kunci, maka objek tidak akan disalin. |
Cara AzCopy mengganti nama kunci objek
AzCopy melakukan langkah-langkah berikut:
Mengganti karakter yang tidak valid dengan '_'.
Menambahkan string
rename_
ke awal kunci baru yang valid.Kunci ini akan digunakan untuk menyimpan nilai metadata asli.
Menambahkan string
rename_key_
ke awal kunci baru yang valid. Kunci ini akan digunakan untuk menyimpan kunci metadata asli. Anda dapat menggunakan kunci ini untuk mencoba memulihkan metadata di sisi Azure karena kunci metadata dipertahankan sebagai nilai pada layanan penyimpanan Blob.
Langkah berikutnya
Temukan contoh lainnya dalam artikel ini:
- Contoh: Mengunggah
- Contoh: Mengunduh
- Contoh: Menyalin antar akun
- Contoh: Sinkronisasi
- Contoh: Google Cloud Storage
- Contoh: Azure Files
- Tutorial: Memigrasikan data lokal ke penyimpanan cloud menggunakan AzCopy
Lihat artikel ini untuk mengonfigurasi pengaturan, mengoptimalkan performa, dan memecahkan masalah: