Memperbarui
Seperti yang ditunjukkan oleh alberge (+1), saat ini Antarmuka Baris Perintah AWS yang luar biasa menyediakan pendekatan paling serbaguna untuk berinteraksi dengan (hampir) semua hal AWS - sementara itu mencakup sebagian besar API layanan dan juga menampilkan perintah S3 tingkat yang lebih tinggi untuk menangani Anda kasus penggunaan khusus, lihat referensi AWS CLI untuk S3 :
- sync - Menyinkronkan direktori dan prefiks S3. Kasus penggunaan Anda dicakup oleh Contoh 2 (penggunaan yang lebih halus dengan
--exclude
, --include
dan penanganan awalan dll. Juga tersedia):
Perintah sinkronisasi berikut menyinkronkan objek dengan awalan dan keranjang yang ditentukan ke objek di bawah awalan dan keranjang yang ditentukan lain dengan menyalin objek s3. [...]
aws s3 sync s3://from_my_bucket s3://to_my_other_bucket
Untuk kelengkapan, saya akan menyebutkan bahwa perintah S3 tingkat yang lebih rendah juga masih tersedia melalui sub perintah s3api , yang akan memungkinkan untuk langsung menerjemahkan solusi berbasis SDK apa pun ke AWS CLI sebelum akhirnya mengadopsi fungsionalitas tingkat yang lebih tinggi.
Jawaban Awal
Memindahkan file di antara bucket S3 dapat dilakukan dengan Objek PUT - Salin API (diikuti dengan DELETE Object ):
Implementasi operasi PUT ini membuat salinan objek yang sudah disimpan di Amazon S3. Operasi penyalinan PUT sama seperti melakukan GET lalu PUT. Menambahkan header permintaan, x-amz-copy-source, membuat operasi PUT menyalin objek sumber ke keranjang tujuan. Sumber
Terdapat sampel masing-masing untuk semua AWS SDK yang ada, lihat Menyalin Objek dalam Operasi Tunggal . Secara alami, solusi berbasis skrip akan menjadi pilihan pertama yang jelas di sini, jadi Menyalin Objek Menggunakan AWS SDK untuk Ruby mungkin merupakan titik awal yang baik; jika Anda lebih memilih Python, hal yang sama juga dapat dicapai melalui boto , tentu saja, lihat metode copy_key()
dalam dokumentasi API S3 boto .
PUT Object
hanya menyalin file, jadi Anda harus secara eksplisit menghapus file melalui DELETE Object
still setelah operasi penyalinan berhasil, tetapi itu hanya akan menjadi beberapa baris setelah keseluruhan skrip yang menangani nama bucket dan file ada di tempatnya (ada contoh masing-masing juga , lihat misalnya Menghapus Satu Objek Per Permintaan ).