Come spostare la benna S3 in un'altra posizione


20

Usiamo S3 per archiviare milioni di voci nella nostra webapp, ora spostiamo tutto su EC2, server UE e vogliamo anche spostare quei dati S3 in UE. Ma il bucket che utilizziamo è negli Stati Uniti e non sembrano esserci strumenti per spostare l'intero contenuto di bucket in bucket diversi.

Esistono inoltre problemi su come sincronizzare i dati in un secondo momento quando passiamo al bucket UE, i dati che verranno creati nel frattempo mentre la migrazione era in esecuzione.

Risposte:


18

La nuova CLI AWS ufficiale supporta nativamente la maggior parte delle funzionalità di 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

Dove puoi trovare un elenco di nomi di regioni?
Bart

Puoi trovare le regioni S3 qui: docs.aws.amazon.com/general/latest/gr/rande.html#s3_region Queste sono quasi identiche alle regioni EC2 da cui provieniaws ec2 describe-regions , ma us-east-1è anche conosciuta come Standard USA per S3 ed è leggermente diverso per motivi storici.
AB

5

Immagino che tu possa eseguire:

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

Dovrebbe copiarlo direttamente.


CLI dice: "comando non trovato"
bart

3

Non conosco una soluzione pacchettizzata per fare questo, ma è essenzialmente solo un ELENCO bucket e quindi PUT-copia ogni oggetto dal bucket USA nel bucket UE. L'API PUT-copy supporta "if-modified-since" e "if-none-match", quindi puoi eseguirla ripetutamente senza sforzi di duplicazione: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/ API / index.html? RESTObjectCOPY.html

Per una migrazione in tempo reale, suggerirei il seguente approccio:

  1. Primo passaggio facoltativo: se hai una grande quantità di dati da migrare, prendi in considerazione l'utilizzo di Import / Export AWS per acquisire la prima istantanea dei dati su un dispositivo fisico negli Stati Uniti e spedirli fisicamente nell'UE. Questo può farti risparmiare tempo e denaro.
    • Imposta uno script per migrare i dati dagli Stati Uniti all'UE usando la corrispondenza if-modified-since o if-none-come descritto sopra. Renderlo abbastanza intelligente da non ostruire nuovi dati UE con dati statunitensi non aggiornati (una volta arrivato al passaggio 5 di seguito). Eseguilo continuamente in un ciclo fino a quando i due secchi si trovano approssimativamente nello stesso stato.
    • Modifica la tua app Web in modo da trasmettere i dati ai bucket USA e UE contemporaneamente, pur continuando a ottenere dati esclusivamente dagli Stati Uniti.
    • Continuare a eseguire lo script di migrazione fino a quando non si è certi che i bucket siano esattamente nello stesso stato (o il più vicino possibile, data l'eventuale coerenza).
    • Modifica nuovamente l'app Web per ottenere i dati esclusivamente dal bucket UE.
    • Ora puoi disattivare lo script di migrazione.
    • Cerca eventuali anomalie di coerenza e puliscile.
    • Modifica l'app Web per interrompere l'inserimento dei dati nel bucket USA.
    • ELIMINA tutto nel secchio americano.

Potresti voler utilizzare S3 Reduced Redundancy Storage sul tuo bucket EU durante la migrazione per ottenere velocità di dati più economiche e tempi di risposta più rapidi, poiché i dati sono solo un duplicato dei dati statunitensi.



0

Ho lavorato parecchio con S3 e non ho mai trovato uno strumento che lo farà in modo nativo. Tuttavia, non sarebbe così difficile usare un paio di script di sincronizzazione s3cmd-sync per mantenere sincronizzati due bucket tra loro.


sì, funzionerebbe, ma ci impone di scaricare tutto localmente, mentre l'API S3 supporta lo spostamento / copia delle voci senza scaricarle.
skrat,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.