Tipp: Azure Storage: Snapshots von BLOBs erstellen

[English version]

Azure Storage unterstützt das Erstellen von Snapshots von BLOBs. Snapshots bieten eine sehr einfache und schnelle Möglichkeit, eine bestimmte Version zu einem bestimmten Zeitpunkt festzuhalten und gezielt diese Version wiederherzustellen.

In diversen Tools ist diese Funktion sehr komfortabel implementiert. Zum Beispiel im ClumsyLeaf CloudXplorer, den ich häufiger verwende. Eine umfangreiche Liste an weiteren Storage Explorer-Anwendungen hat Microsoft im Microsoft Azure Storage Team Blog einmal zusammengestellt. Hier kann sich jeder gerne seinen persönlichen Favoriten heraussuchen.

Hier ein Beispiel, wie diese Funktion im CloudXplorer aussieht und funktioniert. Der erste Screenshot zeigt das Erstellen einen Snapshots und der zweite, wie man eine Liste der Snapshots abruft und ggf. einen Snapshot wiederherstellen kann.

SNAGHTML53c744

SNAGHTML5420ed

Snapshots per PowerShell erstellen

Die PowerShell-Befehle für Azure bieten keinen direkten Befehl an, um ein Snapshot zu erstellen, dafür aber den Zugriff auf einen wichtigen Objekttyp, den wir für diese Zwecke benötigen: ICloudBlob. Dieses Objekt hat eine Methode CreateSnapshot() , der dem Namen entsprechend für ein BLOB einen Snapshot erstellt.

Das folgende Beispiel zeigt in Schritt 1 und 2, wie ich mir aus einem Speicherkonto aus dem Container “source” ein BLOB mit dem Namen “version.txt” zurückgeben lasse. Von diesem BLOB hole ich mir das Objekt ICloudBlob und führe darauf die Methode CreateSnapshot() aus.

In Schritt 3 zeige ich, wie ich nur nach Snapshots filtern lassen kann. Nur bei Snapshots ist die Eigenschaft SnapshotTime gesetzt. Bei BLOBs, die kein Snapshot sind, ist die Eigenschaft SnapshotTime nicht gesetzt (also gleich $null).

In Schritt 4 zeige ich, wie ich den Inhalt eines BLOBs mithilfe des PowerShell-Befehls Get-AzureStorageBlobContent herunterlade. Dabei spiel es gar keine Rolle, ob es sich bei dem BLOB um einen Snapshot handelt oder nicht.

Weitere Informationen

PowerShell: Azure-Automatisierung für Einsteiger (Microsoft Virtual Academy)

Grundlagen: Speicherkonten in Azure per PowerShell erstellen (MSDN Blogs)

Grundlagen: Azure Storage: Dateien (BLOBs) per PowerShell kopieren (MSDN Blogs)

Skripte

Für den Fall, dass die eingebetteten Skripte auf GitHub Gist nicht aufrufbar sind, sind diese hier noch einmal unformatiert aufgeführt. (Es kann durch das Layout der Blog-Webseite sein, dass die Code-Zeilen abgeschnitten sind. Dann bitte einfach im Quelltext der Seite nachschauen.)

 # step 1: get file
$blobFile = Get-AzureStorageBlob -Container source | Where-Object -Property Name -eq "version.txt"

# step 2: create snapshot
$cloudBlob = $blobFile.ICloudBlob
$cloudBlob.CreateSnapshot()

# step 3: get snapshots
$snapshot = Get-AzureStorageBlob -Container source | Where-Object -Property SnapshotTime

# step 4: download snapshot
$snapshot[0] | Get-AzureStorageBlobContent