Frage Wie sichere ich einen AWS S3-Bucket, ohne den Quell-Bucket zu versionieren?


Gibt es eine Möglichkeit, sich von versehentlichen Löschungen eines Amazon S3-Buckets zu erholen?

Wir haben wichtige Informationen in unseren Buckets und müssen das Risiko versehentlicher oder böswilliger Löschungen des Buckets selbst mindern.

Ich weiß, dass ich den gesamten Bucket lokal synchronisieren kann, aber das ist nicht so praktisch, wenn meine Bucketgröße 100 GB beträgt.

Irgendwelche Ideen zu Backup-Strategien?


37


Ursprung


Hier ist ein S3-Backup-Strategieführer, den ich geschrieben habe: eladnava.com/backing-up-your-amazon-s3-buckets-to-ec2 - Elad Nava


Antworten:


Ein anderer Ansatz besteht darin, die S3-Versionierung in 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 Drittanbieter-Tools wie dem BucketExplorer macht das Arbeiten mit der Versionsverwaltung ziemlich trivial (oder den Aufruf der API selbst direkt).

Sie können auch das Löschen mehrerer Faktoren für Ihre S3-Buckets aktivieren - was "versehentliches Löschen" ein wenig schwieriger macht;)

Mehr keine Multi-Faktor-Authentifizierung Löschen
Mehr zum Löschen von Objekten


21



Frage ist, dies ohne Versionierung zu erreichen. - Anuruddha


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

Also um einen Bucket namens mybucket zu sichern

s3cmd mb s3://mybucket_backup
s3cmd --recursive cp s3://mybucket s3://mybucket_backup

13



Gibt es einen schnelleren Weg, dies zu tun? Wenn es n Schlüssel im Bucket gibt, gibt es mindestens n Anfragen zum Kopieren plus einige zum Auflisten (und wahrscheinlich das Überprüfen der Ergebnisse). Bei großen Eimern kann dies eine ganze Weile dauern. - Kariem
Könnten Sie den Backup-Vorgang detailliert beschreiben, wenn mybucket beschädigt ist und mybucket_backup wiederhergestellt werden muss? - Augustin Riedinger


Dies ist keine billige Lösung, aber wenn Ihre Buckets wirklich kritisch sind, hier ist, wie Sie es tun: Starten Sie ein Amazon EC2-Instanz und synchronisieren Sie den Inhalt dort regelmäßig.

Amazon EC2 ist ihr Virtualisierungshosting-Anbieter. Sie können Instanzen von Linux, Windows usw. hochfahren und alles ausführen, was Sie wollen. Sie bezahlen stundenweise, und Sie erhalten lokal einen ziemlich großen Speicherplatz für diesen Server. Zum Beispiel verwende ich die Instanz "große" Größe, die mit 850 GB lokalen Speicherplatz zur Verfügung steht.

Der coole Teil ist, dass es im selben Netzwerk wie S3 ist, und Sie erhalten unbegrenzte Übertragungen zwischen S3 und EC2. Ich benutze 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 machen, um Sachen aus S3 und auf meinen lokalen EC2-Speicherplatz zu kopieren. Sie können es automatisieren, um stündliche Backups zu speichern, wenn Sie möchten, oder wenn Sie spielen möchten, richten Sie JungleDisk (oder seine Linux-Entsprechungen) so ein, dass es sich ungefähr einmal pro Stunde synchronisiert. Wenn jemand eine Datei löscht, haben Sie mindestens ein paar Minuten Zeit, um sie von EC2 zurückzubekommen. Ich würde jedoch die regulären Skripts mit Sicherungen empfehlen - es ist einfach, ein paar Tage Backups zu behalten, wenn Sie sie auf ein 850 GB großes Volume komprimieren.

Dies ist sehr nützlich für den SQL Server-Protokollversand, aber ich kann sehen, wie es Ihr Ziel auch erreichen würde.


6



Ich denke, 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


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

Ich bin mir auch nicht sicher, ob versehentliche Löschungen ein echtes Problem sind, weil Sie das müssen zufällig Löschen Sie alle Bucket-Schlüssel, bevor Sie den Bucket löschen können.


5



+1, da es ziemlich schwierig ist, "alles" in einem Bucket "versehentlich" zu löschen und anschließend auch den Bucket zu löschen.
Wenn Sie ein Tool wie s3cmd verwenden, ist es nicht schwieriger als das Löschen eines gesamten Verzeichnisbaums mit rm -rf - jberryman
Was ist mit Amazon Gletscher? Ist es eine Option? - Tony


Eine andere mögliche Lösung besteht darin, Ihren Bucket in S3 in die Europa-Zone zu replizieren. Dies kann den Bucket nach dem versehentlichen Löschen lange genug beibehalten, um wiederhergestellt zu werden.


5



Bucket-Replikation ist eine gute Option. Für eine zusätzliche Schutzebene verwenden Sie die Cross-Account-Replikation, um sicherzustellen, dass ein Verstoß gegen das Quellkonto nicht zu Datenverlust führt. - Gareth Oakley


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

Sie könnten das Volume auch selbst laufen lassen, aber Snapshot sollte für ein Backup ausreichend sein. Wenn Ihr benutzerdefinierter AMI das alles tut (einschließlich sich selbst abzuschalten, nachdem es fertig ist) ohne Interaktion, dann muss Ihr 'Backup' Skript nur 'ec2run -n 1 -t m1.small ami-' und fire-and-forget.


5



Ich mag diese Idee, dass andere, dies ist eine vernünftige und billigere Lösung. - BMW