Pertanyaan yang cukup mendasar tetapi saya belum dapat menemukan jawabannya. Dengan menggunakan Transit, saya dapat "memindahkan" file dari satu bucket S3 di satu akun AWS ke bucket S3 lain di akun AWS lain, tetapi yang sebenarnya dilakukannya adalah mengunduh file dari yang pertama lalu mengunggahnya ke yang kedua.
Apakah ada cara untuk memindahkan file secara langsung dari satu akun S3 ke yang lain tanpa mengunduhnya di antaranya?
Ya, ada caranya. Dan itu sangat sederhana, meskipun sulit untuk menemukannya. 8)
Misalnya, nama pengguna akun pertama Anda adalah [email protected] dan yang kedua adalah [email protected].
Buka AWS Management Console sebagai acc1. Buka properti bucket Amazon S3, dan di tab "Izin" klik "Tambahkan lebih banyak izin". Kemudian tambahkan Izin Daftar dan Lihat untuk "Pengguna yang Diotentikasi".
Selanjutnya, di AWS IAM (dapat diakses dari antara tab konsol) acc2 buat pengguna dengan akses penuh ke bucket S3 (agar lebih aman, Anda dapat mengatur izin yang tepat, tetapi saya lebih suka membuat pengguna sementara untuk transfer lalu hapus).
Kemudian Anda dapat menggunakan s3cmd (menggunakan kredensial pengguna yang baru dibuat di acc2) untuk melakukan sesuatu seperti:
Semua transfer akan dilakukan di pihak Amazon.
sumber
rsync
, Anda dapat menggunakans3cmd sync s3://acc1_bucket s3://acc2_bucket
.s3cmd
dapat diinstal dengan homebrew juga, fyi--acl-public
sebaliknya, semua file bersifat pribadi (setidaknya untuk saya ketika saya melakukan perintah). dengan begitu banyak file pribadi, saya harus menambahkan kebijakan di keranjang untuk membuatnya menjadi publik lagiGunakan aws cli (saya menggunakan ubuntu 14 ec2 instance) dan jalankan perintah berikut:
Anda perlu menentukan detail akun untuk satu akun, dan memiliki akses tulis publik atau akses baca publik ke akun lainnya.
Ini akan menyinkronkan kedua keranjang. Anda dapat menggunakan perintah yang sama lagi nanti untuk menyinkronkan dengan cepat. Bagian terbaiknya adalah sepertinya tidak memerlukan bandwidth (mis. File tidak melewati komputer lokal).
sumber
aws s3 sync
tampaknya berjalan sekitar urutan besarnya lebih cepat daris3cmd cp
.--grants
opsi. Info lebih lanjut di dokumentasi: docs.aws.amazon.com/cli/latest/reference/s3/sync.html--grants
. Saya mempelajari ini setelah menyalin banyak data dan kemudian harus mengulangi sinkronisasi ke keranjang baru.--grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
mengatur izin baca untuk pengguna publik.s3cmd
saya, dan juga dapat menyinkronkan file perubahan daripada menyalin ulang semuanya jika Anda perlu menjalankan kembali perintah di masa mendatang - jauh lebih baik!boto bekerja dengan baik. Lihat utas ini . Dengan menggunakan boto, Anda menyalin objek langsung dari satu wadah ke wadah lain, alih-alih mengunduhnya ke komputer lokal dan mengunggahnya ke wadah lain.
sumber
Di Mac OS XI menggunakan aplikasi Transmit dari Panic. Saya membuka satu jendela untuk setiap akun S3 (menggunakan Kunci dan rahasia API). Saya kemudian dapat menyeret dari satu ember di satu jendela ke ember lain di jendela lain.
Tidak perlu mengunduh file secara lokal terlebih dahulu.Andrew benar, Transmit mengunduh file secara lokal kemudian mengunggah file.
sumber
Pindahkan file S3 dari satu akun ke akun lain
Mari kita pertimbangkan ada dua akun sumber akun dan akun tujuan. Dan dua ember
source-bucket
dandestination bucket
. Kami ingin memindahkan semua file darisource-bucket
kedestination-bucket
. Kita bisa melakukannya dengan langkah-langkah berikut:aws configure
aws s3 ls s3://source-bucket/
aws s3 cp s3://source-bucket s3://destination-bucket --recursive
aws s3 mv s3://source-bucket s3://destination-bucket --recursive
Alternatif Anda dapat menggunakan perintah sinkronisasi -
aws s3 sync s3://source-bucket s3://detination-bucket
Untuk Penjelasan Lebih Baik ikuti tautannya
sumber
CrossFTP dapat menyalin file S3 langsung dari satu wadah ke wadah lain tanpa mengunduhnya. Ini adalah klien GUI S3 yang bekerja di Windows, Mac, dan Linux.
sumber
Anda dapat menggunakan Cyberduck (open source)
sumber
Untuk file yang baru dibuat (BUKAN objek yang ada), Anda dapat memanfaatkan fungsionalitas baru dari AWS. Ini adalah Replikasi Lintas Wilayah (di bawah "Pembuatan Versi" untuk bucket S3). Anda dapat membuat kebijakan yang memungkinkan Anda mereplikasi objek baru ke keranjang di akun lain.
Untuk objek yang sudah ada, Anda masih perlu menyalin objek Anda menggunakan metode lain - kecuali AWS memperkenalkan fungsionalitas asli untuk ini di masa mendatang.
sumber
Satu dapat melakukannya dengan menjalankan berikut:
aws s3 mv (sync for keeping buckets in sync) s3://source-bucket s3://destination-bucket --recursive
Lampirkan kebijakan keranjang ke keranjang sumber di Akun Sumber.
Lampirkan kebijakan AWS Identity and Access Management (IAM) ke pengguna atau peran di Akun Tujuan.
Gunakan pengguna atau peran IAM di Akun Tujuan untuk melakukan pemindahan lintas akun.
sumber