Cara memindahkan bucket S3 ke lokasi yang berbeda

20

Kami menggunakan S3 untuk menyimpan jutaan entri di aplikasi web kami, sekarang kami memindahkan semuanya ke EC2, server UE, dan kami juga ingin memindahkan data S3 itu ke UE. Tetapi ember yang kami gunakan ada di AS, dan sepertinya tidak ada alat untuk memindahkan seluruh konten ember ke ember yang berbeda.

Ada juga masalah tentang cara menyinkronkan data nanti ketika kita beralih ke ember UE, data yang akan dibuat sementara migrasi sedang berjalan.

skrat
sumber

Jawaban:

18

AWS CLI resmi yang baru secara asli mendukung sebagian besar fungsi s3cmd.

http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

aws s3 sync s3://oldbucket s3://newbucket --source-region us-west-1 --region us-west-2
AB
sumber
Di mana Anda dapat menemukan daftar nama kawasan?
Bart
Anda dapat menemukan wilayah S3 di sini: docs.aws.amazon.com/general/latest/gr/rande.html#s3_region Ini hampir identik dengan wilayah EC2 yang Anda dapatkan aws ec2 describe-regions, tetapi us-east-1juga dikenal sebagai Standar AS untuk S3 dan sekarang agak berbeda karena alasan historis.
AB
5

Saya kira, Anda dapat menjalankan:

s3cmd --recursive cp s3://oldbucket/ s3://newbucket

Itu harus menyalinnya secara langsung.

Alexey
sumber
CLI mengatakan: "command not found"
bart
3

Saya tidak tahu solusi terpaket untuk melakukan ini, tetapi pada dasarnya hanya sebuah DAFTAR ember dan kemudian PUT-salin setiap objek dari ember AS ke ember Uni Eropa. PUT-copy API mendukung "if-modified-since" dan "if-none-match", sehingga Anda dapat menjalankannya berulang kali tanpa upaya duplikasi: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/ API / index.html? RESTObjectCOPY.html

Untuk migrasi langsung, saya akan menyarankan pendekatan berikut:

  1. Langkah pertama opsional: Jika Anda memiliki banyak data untuk dimigrasi, pertimbangkan untuk menggunakan AWS Impor / Ekspor untuk mengambil snapshot pertama dari data pada perangkat fisik di AS dan mengirimkannya secara fisik ke UE. Ini dapat menghemat waktu dan uang Anda.
    • Siapkan skrip untuk memigrasikan data dari AS ke UE menggunakan if-modified-since atau if-none-match seperti yang dijelaskan di atas. Buat cukup pintar untuk tidak menghancurkan data UE baru dengan data AS yang basi (setelah Anda masuk ke langkah 5 di bawah). Jalankan secara terus menerus dalam satu lingkaran sampai kedua ember berada dalam kondisi yang kira-kira sama.
    • Ubah aplikasi web Anda untuk PUT data ke ember AS dan UE secara bersamaan, sambil terus MENDAPATKAN data secara eksklusif dari AS.
    • Lanjutkan menjalankan skrip migrasi Anda hingga Anda yakin bahwa bucket berada dalam kondisi yang persis sama (atau sedekat yang Anda bisa dapatkan, dengan konsistensi pada akhirnya).
    • Ubah lagi aplikasi web untuk DAPATKAN data secara eksklusif dari ember UE.
    • Anda sekarang dapat mematikan skrip migrasi Anda.
    • Cari anomali konsistensi akhirnya dan bersihkan.
    • Ubah aplikasi web untuk menghentikan PUTting data ke ember AS.
    • HAPUS semua yang ada di ember AS.

Anda mungkin ingin menggunakan S3 Reduced Redundancy Storage pada bucket UE Anda selama migrasi untuk mendapatkan kecepatan data yang lebih murah dan waktu respons yang lebih cepat, karena data tersebut hanya duplikat dari data AS.

user44700
sumber
0

Saya telah melakukan cukup banyak pekerjaan dengan S3 dan tidak pernah menemukan alat yang akan melakukan ini secara asli. Namun, tidak akan terlalu sulit untuk menggunakan beberapa skrip sinkronisasi s3cmd-sync untuk menjaga dua ember tetap sinkron satu sama lain.

EEAA
sumber
ya, itu akan berhasil, tetapi mengharuskan kami untuk mengunduh semuanya secara lokal, sementara S3 API mendukung pemindahan / penyalinan entri tanpa mengunduhnya.
skrat