2014-11-24 3 views
6

Ich erstelle eine PHP-basierte Web-Anwendung mit Amazon S3 und Glacier Services.Verschieben von Dateien zwischen Amazon S3 zu Glacier und umgekehrt programmatisch mit API

Jetzt möchte ich meinen Website-Benutzern eine Funktion geben, dass sie jede Datei auswählen und archivieren können (bedeutet Datei von S3 nach Glacier verschieben) und entpacken (bedeutet Datei von Glacier nach S3 verschieben).

Ich habe einige Nachforschungen angestellt und habe keine Möglichkeit gefunden, die API von Amazon zu verwenden.

PROBLEM

Wie kann ich Dateien zwischen S3 und Gletscher mit API bewegen?

+0

Haben Sie sich die APIs für die S3 Lifecycle-Konfiguration angesehen? Ich habe es mit Python Boto gemacht. Nicht sicher über PHP. – helloV

+3

Diese Frage erweckt den Eindruck, dass Sie erstens ein gründlicheres Verständnis dafür benötigen, wie S3s Glacier-Integration tatsächlich auf konzeptueller Ebene funktioniert ... die manuelle Migration nach Glacier ist keine Sache und wenn Dateien in S3 wiederhergestellt werden vom Gletscher, das ist vorübergehend; sie werden auch noch in Glacier gespeichert, nicht zurück nach S3. –

Antwort

4

Sie können die API verwenden, um Lebenszyklusregeln zu definieren, die Dateien von Amazon S3 zu Amazon Glacier archivieren, und Sie können die API verwenden, um eine temporäre Kopie der in Glacier archivierten Dateien abzurufen. Sie können die API jedoch nicht verwenden, um Amazon S3 zu veranlassen, spezifische Dateien in Glacier zu verschieben.

Es gibt zwei Möglichkeiten Amazon Glacier zu verwenden:

  1. Direkt über den Glacier-API, die Sie/Download-Archive hochladen kann zu/von Glacier
  2. Via Amazon S3 Lifecycle-Regeln Gewölbe, die Daten zu archivieren von Amazon S3 in Amazon Glacier

direkt über das API Glacier Connecting Sie Archive für die lang~~POS=TRUNC speichern können, die oft als Ersatz für Band. Daten, die über die Glacier-API gespeichert werden, müssen ebenfalls über die Glacier-API abgerufen werden. Dies wird in der Regel mit normalen Enterprise-Backup-Software oder auch leichtgewichtige Produkte getan wie Cloudberry Backup (Windows) oder Arq (Mac).

Verwendung von Amazon S3 Lifecycle-Regeln können Sie Daten in Amazon S3 speichern, dann Regeln definieren, die bestimmen, wann Daten sollten Glacier für Langzeitspeicherung archiviert werden. Zum Beispiel könnten Daten 90 Tage nach der Erstellung archiviert werden. Die Datenübertragung wird durch die lifecycle rules geregelt, die auf einer täglichen Batch-Basis arbeiten. Die Regeln können über die putBucketLifecycle API call (verfügbar in der PHP SDK) gesetzt werden, aber dies definiert nur die Regeln - es nicht möglich ist, einen API-Aufruf zu machen, die S3 bestimmte Dateien Glacier zu archivieren erzählt.

Amazon S3 verfügt über eine RestoreObject API call (im PHP SDK verfügbar), um eine temporäre Kopie der von Glacier archivierten Daten in S3 wiederherzustellen. Bitte beachten Sie, dass das Wiederherstellen von Daten von Glacier 3-5 Stunden dauert.

+0

Hi John, ich hatte das gleiche Problem, bitte werfen Sie einen Blick auf meine Frage, http://Stackoverflow.com/q/42692610/5026957 –

16

Sie könnten die Glacier-API verwenden, um eine Datei in einen Glacier-Tresor hochzuladen, aber ich empfehle es nicht. Die vorherige Version unserer backup app hat das getan. Wenn Sie eine Datei hochladen, erhält sie einen zufällig zugewiesenen Namen. Sie können in den Metadaten der Datei setzen Sie Ihre Dateinamen hinzufügen, aber wenn Sie eine Liste wollen, was in den Glacier Gewölben müssen Sie abfragen und dann 3-5 Stunden für die Liste warten.

Lifecycle-Richtlinien sind die andere Möglichkeit, Glacier zu verwenden. Die aktuelle Version von Arq nutzt sie, weil jedes Objekt sieht immer noch wie ein S3-Objekt (keine zufällige Objektnamen, keine Verzögerungen bei der Objektlisten bekommen), aber die Objektinhalte sind in Glacier Lagerung.Der einzige Unterschied besteht darin, dass das Abrufen des Objektinhalts in zwei Schritten erfolgt: Sie müssen einen API-Aufruf an request that the object be made downloadable senden; Wenn es fertig ist, können Sie download es. Außerdem gibt es eine "stündliche Spitzengebühr", die ins Spiel kommt, wenn Sie Objekte anfordern, die zu schnell heruntergeladen werden können. Amazon Glacier pricing ist komplex.

Sobald ein Objekt "Glacier Storage Class" ist, gibt es keine Möglichkeit, es wieder in "Standard Storage Class" zu ändern. Sie müssen eine Kopie des Objekts erstellen, das "Standardspeicherklasse" ist, und das Glacier-Objekt löschen.

Also vielleicht eine einfache Lösung für Ihr Problem ist:

  1. Speichern Sie die Daten in 2 "Ordner" in S3, "Standard" und "Gletscher".
  2. Set a lifecycle policy, um alle Objekte im Ordner "glacier" so schnell wie möglich in den Glacier-Datenspeicher zu verschieben.
  3. Wenn Sie ein Objekt von Standard zu glacier, copy it in den Gletscher-Ordner verschieben und löschen Sie das Objekt im Standardordner (es gibt keine "move" API).
  4. Wenn Sie ein Objekt vom Gletscher zum Standard verschieben möchten, tun Sie eine POST request to restore es; Wenn es wiederhergestellt ist, kopieren Sie es in den Standardordner und löschen Sie es aus dem Gletscherordner.
Verwandte Themen