S3 kovasını farklı bir konuma taşıma


20

S3'ü web uygulamamızda milyonlarca girişi depolamak için kullanıyoruz, şimdi her şeyi EC2'ye, AB sunucularına taşıyoruz ve ayrıca bu S3 verilerini AB'ye taşımak istiyoruz. Ancak kullandığımız kova ABD'de ve tüm kova içeriğini farklı bir kovaya taşımak için bir araç yok gibi görünüyor.

Ayrıca, daha sonra AB grubuna geçildiğinde verilerin nasıl senkronize edileceği konusunda da sorun var; bu arada taşıma işlemi sırasında oluşturulacak veriler.

Yanıtlar:


18

Yeni resmi AWS CLI , işlevselliğinin çoğunu doğal olarak destekler s3cmd.

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

Bölge adlarının bir listesini nerede bulabilirsiniz?
bart

S3 bölgelerini burada bulabilirsiniz: docs.aws.amazon.com/general/latest/gr/rande.html#s3_region Bunlar, aldığınız EC2 bölgeleriyle neredeyse aynıdır aws ec2 describe-regions, ancak us-east-1S3 için ABD Standardı olarak da bilinir ve tarihsel nedenlerden dolayı biraz farklı.
AB

5

Sanırım koşabilirsiniz:

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

Doğrudan kopyalamalıdır.


CLI diyor ki: "komut bulunamadı"
bart

3

Bunu yapmak için paketlenmiş bir çözüm bilmiyorum, ama aslında sadece bir kova LİSTESİ ve daha sonra her bir nesneyi ABD kovasından AB kovasına PUT kopyalayın. PUT-copy API'si "eğer değiştirilmişse-beri" ve "eğer-hiçbiri-eşleşmez" i desteklediğinden, çoğaltma çabası olmadan tekrar tekrar çalıştırabilirsiniz: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/ API / index.html? RESTObjectCOPY.html

Canlı bir göç için aşağıdaki yaklaşımı öneririm:

  1. İsteğe bağlı ilk adım: Taşınacak çok fazla veri varsa, ABD'deki fiziksel bir cihazdaki verilerin ilk anlık görüntüsünü yakalamak ve fiziksel olarak AB'ye göndermek için AWS İçe Aktar / Dışa Aktar'ı kullanmayı düşünün. Bu size zaman ve para tasarrufu sağlayabilir.
    • Yukarıda açıklandığı gibi if-modifiye edilmiş-beri veya if-none-match kullanarak verileri ABD'den AB'ye taşımak için bir komut dosyası oluşturun. Eski AB verileriyle yeni AB verilerini engellemeyecek kadar akıllı olun (aşağıdaki 5. adıma geçtiğinizde). İki kova kabaca aynı duruma gelene kadar bir döngüde sürekli olarak çalıştırın.
    • Yalnızca ABD'den veri almaya devam ederken, web uygulamanızı hem ABD hem de AB gruplarına PUT verilerinde değiştirin.
    • Kovaların tam olarak aynı durumda olduğundan emin olana (veya alabileceğiniz en yakın tutarlılığa sahip oluncaya kadar), geçiş komut dosyanızı çalıştırmaya devam edin.
    • Web uygulamasını yalnızca AB grubundan verileri ALMAK için tekrar değiştirin.
    • Artık taşıma komut dosyanızı kapatabilirsiniz.
    • Nihai tutarlılık anomalilerini arayın ve temizleyin.
    • ABD grubuna PUTting verisini durdurmak için web uygulamasını değiştirin.
    • ABD grubundaki her şeyi SİL.

Veriler ABD verilerinin yalnızca bir kopyası olduğundan, daha ucuz veri hızları ve daha hızlı yanıt süreleri elde etmek için geçiş sırasında AB kovanızda S3 Azaltılmış Yedek Depolama'yı kullanmak isteyebilirsiniz.



0

S3 ile adil bir iş yaptım ve bunu doğal olarak yapacak bir araçla hiç karşılaşmadım. Ancak, iki kovayı birbiriyle senkronize tutmak için birkaç s3cmd-sync senkronizasyon komut dosyası kullanmak o kadar da zor olmazdı .


evet, bu işe yarar, ancak her şeyi yerel olarak indirmemizi gerektirirken, S3 API girişleri indirmeden taşıyabilmeyi / kopyalamayı destekler.
skrat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.