S3P menyediakan cara yang jauh lebih cepat untuk menyalin, membuat daftar, menyinkronkan, dan melakukan operasi massal lainnya melalui bucket AWS S3 yang besar.
Anda dapat menggunakannya sebagai alat baris perintah untuk operasi umum, atau Anda dapat menggunakannya sebagai perpustakaan untuk hampir semua hal yang dapat Anda bayangkan.
API S3 disusun berdasarkan daftar item secara serial - minta 1000 item, tunggu, lalu minta 1000 item berikutnya. Ini adalah cara kerja hampir semua alat S3. S3P, bagaimanapun, dapat membuat daftar item secara paralel. Ini memanfaatkan kemampuan S3 untuk meminta 1000 item pertama yang sama dengan atau setelah kunci tertentu. Kemudian, dengan bantuan pembagian dua algoritmik dan beberapa heuristik cerdas, S3P dapat memindai isi keranjang dengan tingkat keparalisme yang berubah-ubah. Dalam praktiknya, S3P dapat membuat daftar bucket hingga 20x lebih cepat dibandingkan metode konvensional.
S3P sebenarnya hanyalah alat daftar S3 yang mewah dan sangat cepat. Meringkas, menyalin, dan menyinkronkan semuanya didukung oleh kemampuan inti S3P untuk membuat daftar objek secara jauh lebih cepat.
Kami mempertahankan kecepatan penyalinan hingga 8 gigabyte/detik antara dua bucket di wilayah yang sama menggunakan satu instans EC2 untuk menjalankan S3P.
Baca selengkapnya tentang S3P di Medium.
NodeJS
AWS-CLI
aws-cli
diperlukan untuk menyalin file besar. Secara default, file yang lebih besar dari 100 megabita disalin dengan aws-cli
. Ini adalah kompromi yang baik untuk kinerja. Namun, Anda dapat mengubah ambang batas tersebut menjadi 5 gigabyte dengan opsi --large-copy-threshold
.
Mengapa?
aws-sdk
tidak mendukung penanganan file yang lebih besar dari 5 gigabyte tanpa solusi yang jauh lebih rumit.
Nama kunci harus menggunakan rangkaian karakter terbatas:
<space>
!"#$%&'()*+,-./
0123456789:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
abcdefghijklmnopqrstuvwxyz{|}~
Mengapa? Karena Aws-S3 tidak mendukung pencatatan Kunci dalam urutan menurun, S3P menggunakan algoritma pembagian dan penaklukan berbasis rentang karakter.
s3p menggunakan kredensial yang sama dengan yang digunakan aws-cli, jadi lihat dokumentasinya: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html
Tidak perlu menginstal s3p secara langsung. Selama Anda sudah menginstal NodeJS, Anda dapat menjalankan s3p langsung menggunakan npx
.
Bantuan bawaan merinci semua perintah, opsi, dan memberikan banyak contoh:
# list commands and get overall help
npx s3p help
Gunakan opsi --help
untuk bantuan mendetail dan contoh untuk setiap perintah:
# get specific command help and example uses
npx s3p cp --help
Anda juga dapat menginstal s3p secara lokal yang memungkinkannya berjalan lebih cepat.
# install s3p on your current machine
npm install s3p -g
# now it runs from the local install:
npx s3p help
Selain performa, S3P menyediakan opsi fleksibel untuk daftar kustom, penyalinan, dan perbandingan:
Anehnya, Anda bahkan tidak perlu menjalankan S3P di cloud untuk melihat banyak manfaatnya. Anda dapat menjalankannya di mesin lokal Anda dan, karena penyalinan S3 tidak pernah dilakukan secara langsung melalui S3P, maka tidak menggunakan bandwidth AWS apa pun.
Kinerja S3-bucket-listing hampir mencapai puncaknya 20.000 50.000 item per detik (mulai S3Pv3.5).
Performa penyalinan S3-bucket dapat melebihi 8 gigabyte per detik.
Ya, saya telah melihat 9 gigabyte per detik berkelanjutan! Ini terjadi pada bucket dengan ukuran file rata-rata sedikit lebih besar dari 100 megabyte. S3P berjalan pada satu instance c5.2xlarge. Sebagai perbandingan, saya belum pernah melihat aws-s3-cp mendapatkan lebih dari 150mB/s. Itu lebih dari 53x lebih cepat.
Ukuran file rata-rata memiliki dampak besar pada keseluruhan byte per detik s3p:
lokasi | memerintah | aws-cli | s3p | percepatan | ukuran rata-rata |
---|---|---|---|---|---|
lokal | aku | 2500 item/dtk | 50.000 item/dtk | 20x | tidak ada |
lokal | cp | 30 mB/dtk | 150 mB/dtk | 5x | 512kB |
ec2 | cp | 150 mB/dtk | 8 GB/dtk | 54x | 100mb |
S3P dikembangkan untuk beroperasi pada keranjang dengan jutaan item dan 100 terabyte. Saat ini S3P masih berupa aplikasi NodeJS single-core. Ada peluang untuk operasi S3 paralel yang lebih masif dengan membagi pekerja atau bahkan mendistribusikan pekerjaan ke seluruh instance dengan sesuatu seperti Elastic-Queue. Jika seseorang membutuhkan solusi yang 100-1000x lebih cepat daripada aws-cli, beri tahu kami. Kami ingin bekerja sama dengan Anda.
- [email protected]
Semua dokumentasi tertanam di halaman bantuan CLI. Menggunakan:
# get a list of commands
npx s3p help
# get a list of options for a command
# example:
npx s3p cp --help
Semua kemampuan CLI juga tersedia sebagai API. Untuk mempelajari API, pertama-tama pelajari opsi CLI, lalu, untuk mempelajari panggilan API untuk perintah CLI tertentu, jalankan perintah tersebut pada baris perintah dengan opsi --api-example
. Ini akan menampilkan contoh kode JavaScript untuk menjalankan perintah itu secara terprogram.
CATATAN: Saat Anda menggunakan
--api-example
pada baris perintah, perintah Anda tidak akan benar-benar dijalankan. S3P hanya akan menampilkan JavaScript yang setara dengan perintah CLI ke konsol dan kemudian keluar.
Berlari:
> npx s3p ls --bucket foo --quiet --api-example
Keluaran:
require ( "s3p" ) . ls ( {
bucket : "foo" ,
quiet : true ,
} ) ;
// > Promise
Uji coba:
> node
Pasta:
require ( "s3p" )
. ls ( {
bucket : "foo" ,
quiet : true ,
} )
. then ( out => console . log ( out ) ) ;
Keluaran:
[
'item1' ,
'item2' ,
'item3' ,
... 8463 more items
}
S3P awalnya dikembangkan oleh GenUI.com bersama dengan Resolusi Bioscience, Inc.
GenUI adalah konsultan perangkat lunak komersialisasi teknologi yang berbasis di Seattle. Kami mempercepat peta jalan perangkat lunak. Silakan menghubungi GenUI dan beri tahu kami tentang proyek Anda. Kami ingin mendengar pendapat Anda.