Aws-cli: sinkronisasi s3 tidak mempertahankan izin di seluruh bucket

Dibuat pada 27 Agu 2014  ·  34Komentar  ·  Sumber: aws/aws-cli

Ketika saya menyinkronkan seluruh ember dengan perintah:

sinkronisasi aws s3 s3://bucket1 s3://bucket2

Saya berharap file di bucket2 memiliki izin yang sama dengan file di bucket1 secara default karena ini adalah "sinkronisasi"

Sebaliknya mereka hanya memiliki izin default.

feature-request s3 s3copy-extra-data s3sync

Komentar yang paling membantu

Karena butuh beberapa waktu bagi saya untuk menemukan bahwa izin tidak disinkronkan, mungkin memperbarui dokumentasi sinkronisasi s3 ke s3 untuk menyebutkan bahwa hanya data, bukan izin yang disinkronkan, yang akan menghemat waktu orang lain di masa mendatang.

Terima kasih lagi

Semua 34 komentar

Apakah semua file memiliki izin yang sama? Karena untuk saat ini Anda dapat menjalankan perintah sync dengan --acl untuk mengatur izin. Namun, saat ini menjalankan perintah sync tanpa argumen opsional lainnya tidak mencari izin dan memastikan ketika objek ditransfer, ia memiliki izin yang sama dengan objek aslinya. Kami harus menambahkan argumen/fitur tambahan untuk menanganinya.

Tidak - jika semua file memiliki izin yang sama, saya dapat menggunakan flag --acl.

Fitur ini benar-benar merupakan mekanisme sinkronisasi yang harus dimiliki, terutama ketika Anda memiliki ribuan file dengan izin berbeda dan menginginkan sinkronisasi sejati di seluruh bucket, bukan hanya salinan file.

Apakah Anda tahu cara lain untuk mendapatkan izin berdasarkan per file, jadi saya bisa membuat skrip ini dengan cukup mudah?

Terima kasih telah membantu.

Ya jika Anda menjalankan aws s3api get-object-acl pada setiap objek. Anda bisa mendapatkan acl's. Berikut adalah dokumen untuk perintah tersebut.
http://docs.aws.amazon.com/cli/latest/reference/s3api/get-object-acl.html

OK - terima kasih itu akan berfungsi, tetapi fitur ini masih akan sangat dihargai dalam sinkronisasi, jika tidak secara default, flag --preserve-s3-acl akan baik-baik saja.

Tidak masalah. Akan mempertimbangkan fitur. Saya percaya alasan mengapa hal itu belum dilaksanakan adalah karena operasi itu sendiri mungkin mahal. Untuk menentukan objek dalam ember s3, panggilan ke ListObjects dilakukan namun ini tidak mengembalikan acls untuk setiap objek. Pada gilirannya, kita harus kembali dan menjalankan GetObjectAcl pada setiap objek yang terdaftar, yang bisa memakan waktu cukup lama jika ada ribuan item di dalam ember.

Karena butuh beberapa waktu bagi saya untuk menemukan bahwa izin tidak disinkronkan, mungkin memperbarui dokumentasi sinkronisasi s3 ke s3 untuk menyebutkan bahwa hanya data, bukan izin yang disinkronkan, yang akan menghemat waktu orang lain di masa mendatang.

Terima kasih lagi

ada update tentang ini?

Saya menambahkan permintaan tarik (#1535) untuk mengatasi ini (juga transfer S3-ke-S3 lainnya, seperti copy ) beberapa minggu yang lalu. Adakah peluang untuk membuatnya dipertimbangkan untuk dimasukkan?

Hai, saya tahu ini adalah utas lama, tetapi kami menyelesaikan ini melalui satu sinkronisasi berdasarkan jenis izin. Intinya: Anda dapat memfilter sinkronisasi menurut nama kunci dengan --exclude dan --include, Anda juga dapat menentukan ACL dari setiap sinkronisasi... Jadi, jika Anda memiliki pola kunci dengan Anda perlu mengatur izin yang berbeda, jalankan sinkronkan perintah berkali-kali yang Anda butuhkan dengan opsi ACL yang berbeda. Ini jauh dari ideal, tetapi berhasil!

Ada pendapat dari tim AWS?

Saya mendorong repositori git saya ke S3 hanya untuk cadangan. Dan kemudian ketika saya menyinkronkannya kembali, semua jenis izin telah berubah.

Semua file bin saya yang dapat dieksekusi tidak lagi dapat dieksekusi, dan git status mengoceh tentang hal itu.

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1, Ya, ember saya diberi nama dengan titik, harus diubah agar kompatibel dengan https melalui cloud front. Disinkronkan ke bucket baru yang diberi nama dengan benar. Tidak dapat mengakses file. Baca tentang izin. Izin tingkat objek ada. Tidak ada perintah untuk mengubah semua izin tingkat objek dalam ember. Bingung bagaimana melanjutkannya. Izin melalui GUI aws sebenarnya terlihat sama dari kedua ember tetapi ketika mencari Daftar Kontrol Akses melalui cli saya melihat ember asli memiliki penerima tambahan yang tidak disalin.
{
"Penerima hibah": {
"Jenis": "Grup",
"URI": " http://acs.amazonaws.com/groups/global/AllUsers "
},
"Izin": "BACA"
}

Selamat pagi!

Kami menutup masalah ini di sini di GitHub, sebagai bagian dari migrasi kami ke UserVoice untuk permintaan fitur yang melibatkan AWS CLI.

Ini akan memungkinkan kami mendapatkan fitur yang paling penting bagi Anda, dengan mempermudah pencarian dan menunjukkan dukungan untuk fitur yang paling Anda pedulikan, tanpa mengurangi percakapan dengan laporan bug.

Sebagai primer UserVoice cepat (jika belum terbiasa): setelah sebuah ide diposting, orang-orang dapat memilih ide tersebut, dan tim produk akan langsung menanggapi saran yang paling populer.

Kami telah mengimpor permintaan fitur yang ada dari GitHub - Cari masalah ini di sana!

Dan jangan khawatir, masalah ini akan tetap ada di GitHub demi anak cucu. Karena ini adalah impor teks saja dari posting asli ke UserVoice, kami akan tetap mengingat komentar dan diskusi yang sudah ada di sini pada masalah GitHub.

GitHub akan tetap menjadi saluran untuk melaporkan bug.

Sekali lagi, masalah ini sekarang dapat ditemukan dengan mencari judul di: https://aws.uservoice.com/forums/598381-aws-command-line-interface

-Tim Alat & SDK AWS

Entri ini secara khusus dapat ditemukan di UserVoice di: https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168325-s3-sync-does-not-preserve-permissions-across- uang

@ASayre - Ini mungkin tempat yang salah untuk berdiskusi, tetapi bisakah Anda menjelaskan mengapa Amazon dengan canggung membagi diskusi di AWS CLI di GitHub dan UserVoice?

Permintaan fitur tampaknya sesuai di sini di GitHub. Ini relatif mudah untuk menyaring hanya permintaan fitur, dan bahkan mengurutkan berdasarkan yang paling populer:

screen shot 2018-03-24 at 12 34 47 am

GitHub juga memudahkan untuk berbagi cuplikan kode atau merujuk ke masalah lain (seperti #1060, yang terkait dengan yang ini), dan sebagian besar basis pengguna AWS CLI sudah aktif di sini di GitHub.

Berdasarkan umpan balik komunitas, kami telah memutuskan untuk mengembalikan permintaan fitur ke masalah GitHub.

Adakah yang datang dengan solusi yang layak untuk menyelesaikan ini? Fungsi yang sangat dibutuhkan.

Jawaban di atas memaksa * untuk dibaca publik. Itu tidak mempertahankan izin.

Apa kemajuannya? Saya juga mengalami masalah ini. Sekarang saya hanya menggunakan sync --include/exclude untuk menyelesaikan masalah ini.

Apakah ada yang mau membayar saya untuk mengerjakan ini?

4 tahun namun mimpi buruk ini terus berlanjut. Saya memiliki lebih dari 10 juta file dan semua dengan izin yang hilang selama penyalinan. Bagaimana mungkin hal sederhana seperti menjaga izin terjadi?

+1

Untuk siapa pun yang datang ke sini, saya dapat menggunakan ini untuk menyalin satu ember ke ember lain dan menyimpan ACL: https://github.com/cobbzilla/s3s3mirror/tree/2.1-stable

Ini juga secara signifikan lebih cepat.

Bagi saya, saya menggunakan s3 saat ini untuk membuat cadangan folder kerja saya. Ini termasuk repo git, dan repo saya terus panik setelah semua izin berubah.

Bagi saya solusinya adalah menemukan cara untuk mengatur ulang hanya izin per repo. Sampai AWS memperbaiki sampah mereka, ini adalah solusi untuk saya.

git config --global --add alias.permission-reset '!git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply'

Saya menemukan solusinya di sini:

https://stackoverflow.com/questions/2517339/how-to-recover-the-file-permissions-to-what-git-thinks-the-file-should-be

Hai,

Saya mengalami masalah yang sama - saya memiliki ember dengan banyak objek, sementara beberapa di antaranya harus dapat diakses publik. Saya harus menyalin seluruh ember ke ember lain sambil mempertahankan ACL dan tentu saja, menyiapkan ACL secara manual akan memakan waktu lama.

Saya telah membuat skrip sederhana ini dengan python yang menyalin objek dari satu ember ke ember lainnya dan juga menyiapkan ACL untuknya.

Silahkan melihat-lihat:
https://github.com/terminator9999/aws-s3-bucket-copy/

Apakah halaman ini membantu?
0 / 5 - 0 peringkat