วิธีย้าย S3 bucket ไปยังตำแหน่งอื่น


20

เราใช้ S3 เพื่อเก็บรายการนับล้านใน webapp ของเราตอนนี้เราย้ายสิ่งทั้งหมดไปยัง EC2 เซิร์ฟเวอร์ EU และเราต้องการย้ายข้อมูล S3 ไปยังสหภาพยุโรป แต่ที่ฝากข้อมูลที่เราใช้อยู่ในสหรัฐอเมริกาและดูเหมือนว่าไม่มีเครื่องมือในการย้ายเนื้อหาที่ฝากข้อมูลทั้งหมดไปยังที่เก็บข้อมูลอื่น

นอกจากนี้ยังมีปัญหาเกี่ยวกับวิธีการซิงโครไนซ์ข้อมูลในภายหลังเมื่อเราสลับไปที่ที่ฝากข้อมูลของสหภาพยุโรปข้อมูลที่จะสร้างขึ้นในขณะที่การย้ายข้อมูลกำลังทำงานอยู่

คำตอบ:


18

ใหม่อย่างเป็นทางการAWS CLIs3cmdกำเนิดสนับสนุนมากที่สุดของการทำงานของ

http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

aws s3 sync s3://oldbucket s3://newbucket --source-region us-west-1 --region us-west-2

คุณจะหารายชื่อภูมิภาคได้จากที่ไหน?
บาร์ต

คุณสามารถค้นหาภูมิภาค S3 ได้ที่นี่: docs.aws.amazon.com/general/latest/gr/rande.html#s3_region สิ่ง เหล่านี้เกือบจะเหมือนกับภูมิภาค EC2 ที่คุณได้รับaws ec2 describe-regionsแต่us-east-1รู้จักกันว่า US Standard สำหรับ S3 และเป็น ค่อนข้างแตกต่างสำหรับเหตุผลทางประวัติศาสตร์
AB

5

ฉันเดาคุณสามารถเรียกใช้:

s3cmd --recursive cp s3://oldbucket/ s3://newbucket

ควรคัดลอกโดยตรง


CLI พูดว่า: "ไม่พบคำสั่ง"
bart

3

ฉันไม่รู้วิธีแก้ปัญหาแบบแพ็กเกจที่จะทำสิ่งนี้ แต่โดยพื้นฐานแล้วเป็นเพียงรายการถังและจากนั้นกดคัดลอกแต่ละวัตถุจากที่ฝากข้อมูลของสหรัฐอเมริกาไปยังที่เก็บข้อมูลของสหภาพยุโรป PUT-copy API รองรับ "if-modified-since" และ "if-none-match" ดังนั้นคุณสามารถเรียกใช้ซ้ำ ๆ ได้โดยไม่ต้องทำซ้ำ: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/ API / index.html? RESTObjectCOPY.html

สำหรับการย้ายข้อมูลสดฉันขอแนะนำวิธีการต่อไปนี้:

  1. ขั้นตอนแรกที่เลือกได้: หากคุณมีข้อมูลจำนวนมากที่ต้องย้ายข้อมูลให้พิจารณาใช้ AWS นำเข้า / ส่งออกเพื่อจับภาพสแนปชอตแรกของข้อมูลบนอุปกรณ์ทางกายภาพในสหรัฐอเมริกาและส่งไปยังสหภาพยุโรป นี่อาจช่วยคุณประหยัดเวลาและเงิน
    • ตั้งค่าสคริปต์เพื่อย้ายข้อมูลจากสหรัฐอเมริกาไปยังสหภาพยุโรปโดยใช้ if-modified-since หรือ if-none-match ตามที่อธิบายไว้ข้างต้น ทำให้ฉลาดพอที่จะไม่ปิดบังข้อมูล EU ใหม่ด้วยข้อมูลเก่าของสหรัฐ (เมื่อคุณไปที่ขั้นตอนที่ 5 ด้านล่าง) เรียกใช้อย่างต่อเนื่องในการวนซ้ำจนกว่าทั้งสองถังจะอยู่ในสถานะคร่าวๆ
    • ปรับเปลี่ยนแอปพลิเคชันเว็บของคุณเป็นข้อมูล PUT ทั้งที่เก็บข้อมูลในสหรัฐอเมริกาและสหภาพยุโรปในเวลาเดียวกันในขณะที่ยังคงรับข้อมูลจากสหรัฐอเมริกาโดยเฉพาะ
    • เรียกใช้สคริปต์การย้ายข้อมูลต่อไปจนกว่าคุณจะมั่นใจได้ว่าถังอยู่ในสภาพเดียวกันทุกประการ (หรือใกล้เคียงที่สุดเท่าที่คุณจะได้รับ
    • แก้ไขแอปพลิเคชันเว็บอีกครั้งให้เป็นข้อมูล GET เฉพาะจากที่เก็บข้อมูล EU
    • ตอนนี้คุณสามารถปิดสคริปต์การย้ายข้อมูลของคุณได้
    • มองหาความผิดปกติที่เกิดขึ้นอย่างสม่ำเสมอและทำความสะอาด
    • ปรับเปลี่ยนแอปพลิเคชันเว็บเพื่อหยุดการวางข้อมูลลงในที่ฝากข้อมูลของสหรัฐอเมริกา
    • ลบทุกอย่างในถังอเมริกา

คุณอาจต้องการใช้ S3 Reduced Redundancy Storage ในที่เก็บ EU ของคุณในระหว่างการโอนย้ายเพื่อรับอัตราข้อมูลที่ถูกกว่าและเวลาตอบสนองที่รวดเร็วกว่าเนื่องจากข้อมูลเป็นเพียงข้อมูลซ้ำซ้อนของข้อมูลในสหรัฐอเมริกา


1

คุณสามารถพิจารณาการตั้งค่าการจำลองแบบข้ามภูมิภาคซึ่งช่วยให้คุณสามารถคัดลอกและเก็บข้อมูลที่ซิงค์ระหว่างภูมิภาคhttps://aws.amazon.com/blogs/aws/new-cross-region-replication-for-amazon- s3 /


โปรดขยายโพสต์ของคุณให้พอเพียง
Deer Hunter

0

ฉันได้ทำงานกับ S3 มาพอสมควรและไม่เคยเจอเครื่องมือที่จะสามารถทำได้ อย่างไรก็ตามมันคงไม่ใช่เรื่องยากเลยที่จะใช้สคริปต์ซิงค์s3cmd-syncสองสามตัวเพื่อเก็บสองถังให้ตรงกันกัน


ใช่มันใช้งานได้ แต่ต้องการให้เราดาวน์โหลดทุกอย่างในพื้นที่ขณะที่ S3 API รองรับการย้าย / คัดลอกรายการโดยไม่ต้องดาวน์โหลด
skrat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.