Wie kann ich ein AWS S3-Bucket sichern, ohne das Quell-Bucket zu versionieren? [Closed]

43

Gibt es eine Möglichkeit zur Wiederherstellung nach versehentlichem Löschen eines Amazon S3-Buckets?

Wir haben wichtige Informationen in unseren Eimern, und ich muss das Risiko eines versehentlichen oder böswilligen Löschens des Eimers selbst verringern.

Ich weiß, dass ich den gesamten Bucket lokal synchronisieren kann, aber das ist nicht besonders praktisch, wenn mein Bucket 100 GB groß ist.

Irgendwelche Ideen zu Sicherungsstrategien?

anon
quelle
Hier ist ein S3-Leitfaden für Sicherungsstrategien, den ich geschrieben habe: eladnava.com/backing-up-your-amazon-s3-buckets-to-ec2
Elad Nava

Antworten:

23

Ein weiterer Ansatz besteht darin, die S3-Versionierung auf Ihrem Bucket zu aktivieren. Sie können dann gelöschte Dateien usw. wiederherstellen. Informationen zur Aktivierung finden Sie in der S3-Dokumentation

Die Verwendung von Tools von Drittanbietern wie BucketExplorer macht das Arbeiten mit der Versionierung ziemlich trivial (im Gegensatz zum direkten Aufrufen der API selbst).

Sie können auch das Löschen durch Multi-Faktor-Authentifizierung für Ihre S3-Buckets aktivieren - was das "versehentliche Löschen" ein wenig erschwert;)

Weitere Informationen zur Multi-Faktor-Authentifizierung Löschen
Weitere Informationen zum Löschen von Objekten

snarkyboojum
quelle
2
Frage ist, dies ohne Versionierung zu erreichen.
Anuruddha
13

Sie könnten s3cmd http://s3tools.org/s3cmd verwenden

Also einen Eimer namens mybucket sichern

s3cmd mb s3://mybucket_backup
s3cmd --recursive cp s3://mybucket s3://mybucket_backup
Ian Purton
quelle
3
Gibt es einen schnelleren Weg, dies zu tun? Wenn sich n Schlüssel im Bucket befinden, gibt es mindestens n Kopieranforderungen sowie einige zum Auflisten (und wahrscheinlich zum Überprüfen der Ergebnisse). Dies kann bei großen Eimern einige Zeit dauern.
Kariem
1
Könnten Sie den Sicherungsvorgang detailliert beschreiben, wenn mybucket beschädigt ist und mybucket_backup wiederhergestellt werden muss?
Augustin Riedinger
7

Dies ist keine billige Lösung, aber wenn Ihre Buckets wirklich kritisch sind, gehen Sie folgendermaßen vor: Starten Sie eine Amazon EC2-Instanz und synchronisieren Sie den Inhalt dort regelmäßig.

Amazon EC2 ist ihr Virtualisierungs-Hosting-Anbieter. Sie können Instanzen von Linux, Windows usw. starten und alles ausführen, was Sie möchten. Sie zahlen stundenweise und Sie erhalten lokal einen ziemlich großen Speicherplatz für diesen Server. Zum Beispiel verwende ich die "große" Instanz, die mit 850 GB lokalem Speicherplatz geliefert wird.

Der coole Teil ist, dass es sich im selben Netzwerk wie S3 befindet und Sie unbegrenzte Übertragungen zwischen S3 und EC2 erhalten. Ich verwende die $ 20 Jungle Disk- Software auf einer Windows EC2-Instanz, mit der ich auf meine S3-Buckets zugreifen kann, als wären sie lokale Festplattenordner. Dann kann ich geplante Batch-Dateien erstellen, um Daten aus S3 auf meinen lokalen EC2-Speicherplatz zu kopieren. Sie können es automatisieren, um stündliche Backups zu erstellen, wenn Sie JungleDisk (oder seine Linux-Entsprechungen) für die stündliche Synchronisierung einrichten möchten. Wenn jemand eine Datei löscht, haben Sie mindestens ein paar Minuten Zeit, um sie von EC2 zurückzubekommen. Ich würde jedoch die regelmäßigen geskripteten Sicherungen empfehlen - es ist einfach, ein paar Tage an Sicherungen aufzubewahren, wenn Sie sie auf ein 850-GB-Volume komprimieren.

Dies ist sehr nützlich für den SQL Server-Protokollversand, aber ich kann auch sehen, wie Ihr Ziel erreicht wird.

Brent Ozar
quelle
Sie könnten eine Mikroinstanz verwenden und so viel EBS (Elastic Block Storage) hinzufügen, wie Sie benötigen. Kann eine billigere Option sein.
Shawn Vader
Eigentlich sollten Sie das nicht tun, da die dedizierte Bandbreite von und zu S3 von der Größe der EC2-Instanz abhängt. Wenn Sie einen hohen Durchsatz wünschen, benötigen Sie eine große Instanz (= $$$$). Mein ehemaliger Arbeitgeber hat das auf die harte Tour herausgefunden.
John Cowan
6

Eine mögliche Lösung könnte darin bestehen, einfach einen "Backup-Bucket" zu erstellen und Ihre vertraulichen Informationen dort zu duplizieren. Theoretisch sind Ihre Daten in S3 sicherer als auf Ihrer Festplatte.

Außerdem bin ich mir nicht sicher, ob versehentliches Löschen ein echtes Problem darstellt, da Sie alle Ihre Bucket-Schlüssel versehentlich löschen müssen, bevor Sie den Bucket löschen können.

JAG
quelle
+1, da es ziemlich schwierig wäre, "versehentlich" alles in einem Bucket zu löschen und anschließend auch den Bucket zu löschen.
10
Wenn Sie ein Tool wie s3cmd verwenden, ist es nicht schwieriger, einen gesamten Verzeichnisbaum mitrm -rf
jberryman 24.02.10
Was ist mit Amazon Glacier? Ist es eine Option?
Tony
6

Eine andere mögliche Lösung besteht darin, Ihren Bucket in S3 in die Europa-Zone zu replizieren. Dies kann dazu führen, dass der Bucket nach dem versehentlichen Löschen so lange erhalten bleibt, bis er wiederhergestellt ist.

Shawnswaner
quelle
1
Die Bucket-Replikation ist eine gute Option. Verwenden Sie für eine zusätzliche Schutzebene die kontenübergreifende Replikation, um sicherzustellen, dass bei einem Verstoß gegen das Quellkonto keine Daten verloren gehen.
Gareth Oakley
6

Um Brents (ausgezeichnete) Antwort ein wenig zu modifizieren; Sie müssen die Instanz nicht weiter ausführen. Erstellen Sie ein EC2-AMI, das Ihre Daten herunterfährt, mit einem EBS-Volume synchronisiert, dieses Volume abbildet und sich selbst herunterfährt.

Sie können das Volume auch für sich laufen lassen, aber ein Snapshot sollte für ein Backup ausreichen. Wenn Ihr benutzerdefiniertes AMI dies alles erledigt (einschließlich des Herunterfahrens, nachdem es fertig ist), muss Ihr "Backup" -Skript nur "ec2run -n 1 -t m1.small ami-" und fire-and-forget "ausführen.

Andrew Lusk
quelle
Ich mag diese Idee, dass andere dies vernünftiger und kostengünstiger lösen.
BMW