S3P มอบวิธีที่เร็วกว่ามากในการคัดลอก แสดงรายการ ซิงค์ และดำเนินการเป็นกลุ่มอื่นๆ บนบัคเก็ต AWS S3 ขนาดใหญ่
คุณสามารถใช้มันเป็นเครื่องมือบรรทัดคำสั่งสำหรับการดำเนินการทั่วไป หรือคุณสามารถใช้เป็นไลบรารีสำหรับเกือบทุกอย่างที่คุณสามารถจินตนาการได้
API ของ S3 มีโครงสร้างเกี่ยวกับการแสดงรายการแบบอนุกรม - ขอ 1,000 รายการ รอแล้วขอ 1,000 รายการถัดไป นี่คือวิธีที่เครื่องมือ S3 เกือบทั้งหมดทำงาน อย่างไรก็ตาม S3P สามารถแสดงรายการแบบขนานได้ โดยใช้ประโยชน์จากความสามารถของ S3 ในการขอ 1,000 รายการแรกเท่ากับหรือหลังคีย์ที่กำหนด จากนั้น ด้วยความช่วยเหลือของการแบ่งอัลกอริธึมและการวิเคราะห์พฤติกรรมอัจฉริยะบางอย่าง S3P จึงสามารถสแกนเนื้อหาของบัคเก็ตในระดับความขนานได้ตามต้องการ ในทางปฏิบัติ S3P สามารถแสดงรายการบัคเก็ต ได้เร็วกว่าวิธีการทั่วไปถึง 20 เท่า
S3P เป็นเพียงเครื่องมือแสดงรายการ S3 ที่หรูหราและรวดเร็วมาก การสรุป การคัดลอก และการซิงค์ทั้งหมดได้รับการเสริมประสิทธิภาพด้วยความสามารถหลักของ S3P ในการแสดงรายการออบเจ็กต์ที่รวดเร็วยิ่งขึ้น
เราได้รับความเร็วการคัดลอกสูงสุด 8 กิกะไบต์/วินาที ระหว่างสองบัคเก็ตในภูมิภาคเดียวกันโดยใช้ EC2 instance เดียวเพื่อรัน S3P
อ่านเพิ่มเติมเกี่ยวกับ S3P บนสื่อ
โหนดJS
AWS-CLI
aws-cli
จำเป็นสำหรับการคัดลอกไฟล์ขนาดใหญ่ ตามค่าเริ่มต้น ไฟล์ที่มีขนาดใหญ่กว่า 100 เมกะไบต์จะถูกคัดลอกด้วย aws-cli
นี่เป็นการประนีประนอมที่ดีสำหรับประสิทธิภาพ อย่างไรก็ตาม คุณสามารถเปลี่ยนเกณฑ์ดังกล่าวเป็น 5 กิกะไบต์ได้ด้วยตัวเลือก --large-copy-threshold
ทำไม
aws-sdk
ไม่รองรับไฟล์ที่มีขนาดใหญ่กว่า 5 กิกะไบต์หากไม่มีวิธีแก้ปัญหาที่ซับซ้อนกว่านี้มาก
ชื่อคีย์ต้องใช้ชุดอักขระที่จำกัด:
<space>
!"#$%&'()*+,-./
0123456789:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
abcdefghijklmnopqrstuvwxyz{|}~
ทำไม เนื่องจาก Aws-S3 ไม่รองรับการแสดงรายการคีย์จากมากไปน้อย S3P จึงใช้อัลกอริธึมการแบ่งและพิชิตตามช่วงอักขระ
s3p ใช้ข้อมูลรับรองเดียวกันกับที่ aws-cli ใช้ ดังนั้นโปรดดูเอกสารประกอบ: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html
ไม่จำเป็นต้องติดตั้ง s3p โดยตรง ตราบใดที่คุณติดตั้ง NodeJS คุณสามารถรัน s3p ได้โดยตรงโดยใช้ npx
วิธีใช้ในตัวให้รายละเอียดคำสั่ง ตัวเลือก และตัวอย่างมากมาย:
# list commands and get overall help
npx s3p help
ใช้ตัวเลือก --help
สำหรับความช่วยเหลือโดยละเอียดและตัวอย่างสำหรับแต่ละคำสั่ง:
# get specific command help and example uses
npx s3p cp --help
คุณยังสามารถติดตั้ง s3p ในเครื่องได้ซึ่งจะทำให้ทำงานเร็วขึ้น
# install s3p on your current machine
npm install s3p -g
# now it runs from the local install:
npx s3p help
นอกเหนือจากประสิทธิภาพแล้ว S3P ยังมีตัวเลือกที่ยืดหยุ่นสำหรับรายการที่กำหนดเอง การคัดลอกและการเปรียบเทียบ:
น่าประหลาดใจที่คุณไม่จำเป็นต้องเรียกใช้ S3P ในระบบคลาวด์เพื่อดูคุณประโยชน์มากมาย คุณสามารถรันบนเครื่องภายในของคุณได้ และเนื่องจากการคัดลอก S3 ไม่เคยผ่าน S3P โดยตรง จึงไม่ใช้แบนด์วิดท์ AWS ใดๆ
ประสิทธิภาพการลงรายการถัง S3 สามารถทำได้เกือบหมด 20,000 50,000 รายการต่อวินาที (ณ ของ S3Pv3.5)
ประสิทธิภาพการคัดลอกบัคเก็ต S3 สามารถเกิน 8 กิกะไบต์ต่อวินาที
ใช่ ฉันเห็นความเร็วคงที่ถึง 9 กิกะไบต์ต่อวินาที! นี่เป็นที่เก็บข้อมูลที่มีขนาดไฟล์โดยเฉลี่ยใหญ่กว่า 100 เมกะไบต์เล็กน้อย S3P ทำงานบนอินสแตนซ์ c5.2xlarge เดียว จากการเปรียบเทียบ ฉันไม่เคยเห็น aws-s3-cp รับมากกว่า 150mB/s มาก่อน ซึ่งเร็วกว่าถึง 53 เท่า
ขนาดไฟล์โดยเฉลี่ยมีผลกระทบอย่างมากต่อไบต์ต่อวินาทีโดยรวมของ s3p:
ที่ตั้ง | สั่งการ | aws-cli | เอส3พี | เร่งความเร็ว | ขนาดเฉลี่ย |
---|---|---|---|---|---|
ท้องถิ่น | LS | 2,500 รายการ/วินาที | 50,000 รายการ/วินาที | 20x | ไม่มี |
ท้องถิ่น | ซีพี | 30 เมกะไบต์/วินาที | 150 เมกะไบต์/วินาที | 5x | 512 กิโลไบต์ |
อีซี2 | ซีพี | 150 เมกะไบต์/วินาที | 8 กิกะไบต์/วินาที | 54x | 100 ลบ |
S3P ได้รับการพัฒนาให้ทำงานบนบัคเก็ตที่มีรายการนับล้านรายการและ 100 เทราไบต์ ปัจจุบัน S3P ยังคงเป็นเพียงแอปพลิเคชัน NodeJS แบบคอร์เดียว มีโอกาสสำหรับการดำเนินการ S3 แบบขนานที่มีขนาดใหญ่ยิ่งขึ้นโดยการฟอร์กผู้ปฏิบัติงาน หรือแม้แต่กระจายงานข้ามอินสแตนซ์ด้วย Elastic-Queue หากมีใครต้องการโซลูชันที่เร็วกว่า aws-cli ถึง 100-1,000 เท่า โปรดแจ้งให้เราทราบ เรายินดีที่จะร่วมงานกับคุณ
- [email protected]
เอกสารทั้งหมดถูกฝังอยู่ในหน้าช่วยเหลือของ CLI ใช้:
# get a list of commands
npx s3p help
# get a list of options for a command
# example:
npx s3p cp --help
ความสามารถทั้งหมดของ CLI ยังมีให้บริการในรูปแบบ API อีกด้วย หากต้องการเรียนรู้ API ก่อนอื่นให้เรียนรู้ตัวเลือก CLI จากนั้นหากต้องการเรียนรู้การเรียก API สำหรับคำสั่ง CLI เฉพาะ ให้รันคำสั่งนั้นบนบรรทัดคำสั่งด้วยตัวเลือก --api-example
นี่จะแสดงโค้ดตัวอย่าง JavaScript สำหรับการเรียกใช้คำสั่งนั้นโดยทางโปรแกรม
หมายเหตุ: เมื่อคุณใช้
--api-example
บนบรรทัดคำสั่ง คำสั่งของคุณจะไม่ทำงานจริง S3P จะส่งเอาต์พุต เฉพาะ JavaScript ที่เทียบเท่ากับคำสั่ง CLI ไปยังคอนโซลแล้วปิด
วิ่ง:
> npx s3p ls --bucket foo --quiet --api-example
เอาท์พุท:
require ( "s3p" ) . ls ( {
bucket : "foo" ,
quiet : true ,
} ) ;
// > Promise
ทดสอบการทำงาน:
> node
แปะ:
require ( "s3p" )
. ls ( {
bucket : "foo" ,
quiet : true ,
} )
. then ( out => console . log ( out ) ) ;
เอาท์พุท:
[
'item1' ,
'item2' ,
'item3' ,
... 8463 more items
}
S3P ได้รับการพัฒนาโดย GenUI.com ร่วมกับ Resolution Bioscience, Inc.
GenUI เป็นบริษัทที่ปรึกษาซอฟต์แวร์เชิงพาณิชย์ด้านเทคโนโลยีที่ตั้งอยู่ในซีแอตเทิล เราเร่งแผนงานซอฟต์แวร์ โปรดติดต่อ GenUI และแจ้งให้เราทราบเกี่ยวกับโครงการของคุณ เราชอบที่จะได้ยินจากคุณ