Frage So verschieben Sie den S3-Bucket an einen anderen Ort


Wir verwenden S3 zum Speichern von Millionen von Einträgen in unserer Webapp, jetzt verschieben wir das Ganze auf EC2, EU-Server, und wir wollen diese S3-Daten auch nach EU verschieben. Aber der Bucket, den wir verwenden, ist in den USA, und es scheint kein Werkzeug zu geben, um den gesamten Bucket-Inhalt in einen anderen Bucket zu verschieben.

Es gibt auch Probleme beim späteren Synchronisieren der Daten, wenn wir zu EU-Bucket wechseln, den Daten, die während der laufenden Migration erstellt werden.


18
2018-04-20 14:45


Ursprung




Antworten:


Der neue Beamte AWS CLI unterstützt nativ die meisten Funktionen von 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

18
2018-01-12 23:54



Wo finden Sie eine Liste von Regionsnamen? - bart
Sie können die S3-Regionen hier finden: docs.aws.amazon.com/general/latest/gr/rande.html#s3_region   Diese sind fast identisch mit den EC2 Regionen, aus denen Sie kommen aws ec2 describe-regions, aber us-east-1 wird auch als US-Standard für S3 bezeichnet und ist aus historischen Gründen etwas anders. - A B


Ich denke, du kannst rennen:

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

Es sollte es direkt kopieren.


5
2017-08-12 13:37



CLI sagt: "Befehl nicht gefunden" - bart


Ich kenne keine gepackte Lösung, um dies zu tun, aber es ist im Wesentlichen nur eine Bucket-Liste und dann PUT-Kopie jedes Objekt aus dem US-Bucket in den EU-Bucket. Die PUT-copy-API unterstützt "if-modified-since" und "if-none-match", sodass Sie sie wiederholt ausführen können, ohne Aufwand zu duplizieren: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/API/index.html?RESTObjectCOPY.html

Für eine Live-Migration würde ich den folgenden Ansatz vorschlagen:

  1. Optionaler erster Schritt: Wenn Sie sehr viele zu migrierende Daten haben, sollten Sie AWS Import / Export in Betracht ziehen, um den ersten Snapshot der Daten auf einem physischen Gerät in den USA zu erfassen und in die EU zu senden. Dies kann Ihnen Zeit und Geld sparen.
    • Richten Sie ein Skript ein, um Daten von US nach EU zu migrieren, indem Sie wie oben beschrieben if-modified-since oder if-none-match verwenden. Machen Sie es so schlau, dass Sie keine neuen EU-Daten mit veralteten US-Daten überdecken (sobald Sie mit Schritt 5 weiterkommen). Führen Sie es kontinuierlich in einer Schleife, bis die beiden Eimer in etwa den gleichen Zustand haben.
    • Ändern Sie Ihre Web App so, dass Daten gleichzeitig in den US- und EU-Buckets gepatcht werden, während weiterhin Daten ausschließlich aus den USA abgerufen werden.
    • Fahren Sie mit der Ausführung des Migrationsskripts fort, bis Sie sicher sind, dass sich die Buckets im gleichen Status befinden (oder so nah wie möglich an der endgültigen Konsistenz).
    • Ändern Sie die Webanwendung erneut, um Daten ausschließlich aus dem EU-Bucket abzurufen.
    • Sie können Ihr Migrationsskript jetzt deaktivieren.
    • Suchen Sie nach Konsistenzanomalien und bereinigen Sie sie.
    • Ändern Sie die Webanwendung so, dass die Daten nicht mehr an den US-Bucket gesendet werden.
    • Lösche alles im US-Bucket.

Möglicherweise möchten Sie S3 Reduced Redundancy Storage in Ihrem EU-Bucket während der Migration verwenden, um günstigere Datenraten und schnellere Antwortzeiten zu erhalten, da die Daten nur ein Duplikat der US-Daten sind.


3
2018-06-02 19:43





Sie können auch die Regionsübergreifende Replikation aktivieren, mit der Sie Daten zwischen Regionen kopieren und gleichzeitig synchronisieren können https://aws.amazon.com/blogs/aws/new-cross-region-replication-for-amazon-s3/ 


1
2018-04-14 09:56



Bitte erweitern Sie Ihren Beitrag, um sich selbst zu versorgen. - Deer Hunter


Ich habe viel mit S3 gearbeitet und bin nie auf ein Tool gestoßen, das dies nativ machen würde. Es wäre jedoch nicht so schwierig, ein paar davon zu verwenden s3cmd-sync Synchronisierungsskripts, um zwei Buckets miteinander synchronisiert zu halten.


0
2018-04-20 15:34



Ja, das würde funktionieren, aber wir müssen alles lokal herunterladen, während S3 API das Verschieben / Kopieren von Einträgen unterstützt, ohne sie herunterzuladen. - skrat