Wie man Blob Storage über Azure File Storage verwendet

Sie könnten sich irgendwann in der Notwendigkeit einer günstigen, aber effizienten Lösung zur Speicherung Ihrer Dateien befinden, aber wo finden Sie diese Lösung? Schauen Sie sich das Binary Large Object (Blob) Storage von Microsoft Azure an! Blob Storage ist einer der Azure-Speicherdienste und ermöglicht die Speicherung großer Mengen an Text- und Binärdatendateien, Streaming-Inhalten oder sogar statischem Inhalt für die Verteilung.

In diesem Tutorial lernen Sie, wie Sie mit Blob Storage in Azure arbeiten, indem Sie einige gängige Beispiele durchgehen.

Lesen Sie weiter, um einzusteigen!

Voraussetzungen

In diesem Tutorial wird eine praktische Demonstration durchgeführt. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie Folgendes installiert und verfügbar haben.

Aufbau einer Azure-Umgebung

Bevor Sie Blob-Speicher zum Speichern Ihrer Dateien verwenden, müssen Sie zunächst die PowerShell Core-Module importieren, eine Verbindung mit Ihrem Azure-Abonnement herstellen und eine Azure-Umgebung erstellen.

1. Starten Sie PowerShell 7 und führen Sie den folgenden Befehl aus, um die Module zu importieren, die Sie zum Speichern von Dateien im Blob-Speicher verwenden werden.

Importing the necessary modules
# Az.Accounts - Bietet Cmdlets für die Verwaltung von Anmeldeinformationen
# Az.Resources - Bietet Cmdlets zum Arbeiten mit den obersten Azure-Ressourcenanbietern, 
               # wie Abonnements
# Az.Storage - Bietet die Cmdlets, die Ihnen bei der Arbeit mit 
             # verschiedenen Speicherressourcen, wie Blobs, helfen werden
Import-Module Az.Accounts, Az.Resources, Az.Storage

2. Melden Sie sich anschließend bei Ihrem Azure Active Directory (AD)-Mandanten an, und führen Sie dann den folgenden Befehl aus, um eine interaktive Authentifizierung in Ihrem Webbrowser abzuschließen, wie unten gezeigt.

Obwohl dies über den Rahmen dieses Tutorials hinausgeht, gibt es andere Authentifizierungsmethoden, wie z.B. ein Service Principal oder die Verwendung eines Zugriffstokens.

Connect-AzAccount
Azure Portal interactive login.

Stellen Sie immer sicher, dass der Mandant und das Abonnement, die nach dem Anmelden angezeigt werden, die sind, die Sie verwenden möchten. Bei Bedarf können Sie Ihren Kontext ändern.

3. Führen Sie nun den unten stehenden Befehl aus, um eine neue Ressourcengruppe namens demo zu erstellen und um fünf zufällige Zahlen erweitert (Get-Random -Maximum 99999). Ressourcengruppen befinden sich hierarchisch unterhalb von Abonnements und enthalten Ressourcen, die eine granularere Verwaltung ermöglichen.

Beachten Sie, dass die -Ort der Ressourcengruppe für dieses Beispiel auf Central US festgelegt ist. Wenn der Befehl abgeschlossen ist, wird das Ergebnis in der Variablen $resourceGroup gespeichert.

$resourceGroup = New-AzResourceGroup "demo$(Get-Random -Maximum 99999)" -Location 'Central US'
Creating a new resource group

4. Führen Sie den folgenden Befehl aus, um die folgenden Aufgaben auszuführen und ein neues Azure-Speicherkonto zu erstellen. Für dieses Beispiel ist das Speicherkonto mit dem Namen storage benannt und mit fünf zufälligen Zahlen ergänzt (Get-Random -Maximum 99999). Die $storageAccount-Variable wird das zurückgegebene Objekt nach Abschluss des Befehls halten.

# Geben Sie den -ResourceGroupName mit der ResourceGroupName-Eigenschaft an 
# der $resourceGroup-Variable an, die Sie im dritten Schritt erstellt haben.
# Fügen Sie dem Speicherkonto zufällige Zahlen hinzu -Name 
# ähnlich wie die Ressourcengruppe.
# Legen Sie die gleiche -Location wie die Location-Eigenschaft der $resourceGroup-Variable fest.
# Das Platzieren von Ressourcen in derselben Region wie die übergeordnete Ressourcengruppe ist eine bewährte Praxis. 
# Geben Sie den Namen des Speicherkontos -SkuName an, entweder
# lokaler redundanter Speicher (LRS) oder einen global eindeutigen Namen innerhalb von Azure.

$storageAccount = New-AzStorageAccount `
 -ResourceGroupName $resourceGroup.ResourceGroupName `
 -Name storage$(Get-Random -Maximum 99999) `
 -Location $resourceGroup.Location `
 -SkuName Standard_LRS
Creating a new storage account

5. Führen Sie den folgenden Befehl aus, um ein paar Aufgaben für die Azure AD-Rollen-Zuweisung auszuführen:

  • Der Wert von -SignInName verwendet das Konto, mit dem Sie sich derzeit über die UserID-Eigenschaft, die vom Get-AzAccessToken-Cmdlet zurückgegeben wird, angemeldet haben.
  • Der Wert von -RoleDefinitionName ist die integrierte Rolle Storage Blob Data Contributor, die Sie zuweisen.
  • Der Wert von -Scope legt den Anwendungsbereich der Rollenzuweisung für das von Ihnen erstellte Speicherkonto (storage10029 unten dargestellt) über die Id-Eigenschaft der Variable $storageAccount fest.

Sie können jederzeit feinere Rollenzuweisungen für einzelne Container nach Bedarf bereitstellen.

New-AzRoleAssignment `
 -SignInName (Get-AzAccessToken).UserId`
 -RoleDefinitionName "Storage Blob Data Contributor"`
 -Scope $storageAccount.Id
Creating and verifying a new file

6. Führen Sie abschließend die folgende Befehlsreihe aus, um eine Datei namens temp.dat auf Ihrem lokalen System zu erstellen. Sie werden diese Datei in den folgenden Abschnitten vom Speicherkonto hochladen und herunterladen, um zu zeigen, wie Blobspeicher funktioniert.

# Laden Sie die .NET-Klasse FileStream
$file = New-Object System.IO.FileStream .\temp.dat,Create,ReadWrite
# Legen Sie die Größe der Datei fest
$file.SetLength(10MB)
# Schließen Sie den Handle
$file.Close()
# Suchen Sie die Datei, um die Größe zu bestätigen
(Get-ChildItem $file.Name).Length
Creating and verifying a new file

Hochladen von Dateien über PowerShell

Nun, da Sie eine Azure-Umgebung erstellt und eine Beispieldatei erstellt haben, können wir mit dem Hochladen der Datei in den Blob-Speicher beginnen. Blob-Speicher funktioniert anders als Standarddateisysteme. Jede Datei im Blob-Speicher ist ein Objekt und wird in Containern aufbewahrt.

Die Kernfunktionalität von Blobs ist ähnlich wie bei anderen Dateisystemen, aber es gibt Anwendungsfälle, bei denen eines davon die bessere Lösung sein könnte. Blobs können sogar virtuelle Dateisysteme unterstützen (z.B. BlobFuse).

Microsoft bietet mehrere Methoden zum Hochladen von Dateien in Ihre Speicherkonten über PowerShell, AzCopy und das Azure-Portal. Aber lassen Sie uns die Beispieldatei (temp.dat) zuerst über PowerShell in den Blob-Speicher hochladen. PowerShell ermöglicht Ihnen eine konsistente Erfahrung bei der Arbeit mit Ihren Azure-Speicherkonten.

Die für diese Demo erforderlichen Aktionen verursachen Kosten. Überwachen Sie Ihren Verbrauch und löschen Sie Ressourcen, wenn Sie sie nicht mehr verwenden möchten.

Führen Sie die unten stehenden Befehle aus, um einen neuen Container zu erstellen und die Datei temp.dat ($file) als Objekt hochzuladen. Der Container ist in diesem Beispiel als demo benannt, aber Sie können ihn nach Belieben umbenennen.

# Erstellt einen Container innerhalb von $storageAccount über die Kontexteigenschaft des Speicherkontos
# Das zurückgegebene Objekt wird dann der Variablen $container übergeben
$container = New-AzStorageContainer -Name demo -Context $storageAccount.Context
# Lädt die temp.dat-Datei ($file) in den Demo-Container ($container) hoch
# Der Blob-Name (-Blob) verwendet denselben Namen wie die Datei, die hochgeladen wird (Get-ChildItem $file.Name)
Set-AzStorageBlobContent -File $file.Name -Container $container.Name -Blob (Get-ChildItem $file.Name).Name -Context $storageAccount.Context
Uploading a file to Azure Storage Account

Hochladen von Dateien über AzCopy

Vielleicht haben Sie komplexere Anwendungsfälle, wie das Synchronisieren von Inhalten oder das Kopieren von Inhalten zwischen verschiedenen Konten im großen Maßstab. Wenn ja, ist das Befehlszeilentool AzCopy genau das Richtige für Sie.

Führen Sie die folgenden Befehle aus, um sich bei Ihrem Azure-Mandanten anzumelden und Ihre lokale Datei ($file) an den URL-Endpunkt Ihres Containers zu kopieren. Sie melden sich bei Azure-Mandanten an, da AzCopy nicht über die Anmeldeinformationen informiert ist, die Sie mit PowerShell verwenden.

# Melden Sie sich beim Azure-Mandanten an
& .\azcopy.exe login
# Kopieren Sie die lokale $Datei in die vollständige URI des Ziel-$Containers
& .\azcopy.exe copy $file.Name $container.CloudBlobContainer.Uri.AbsoluteUri
Uploading to Azure Storage Account using AzCopy

Statt hochzuladen, möchten Sie vielleicht Dateien über AzCopy herunterladen. Wenn ja, führen Sie den folgenden Befehl aus, um die angegebenen Dateien (temp.dat) von Ihrem Container in das aktuelle lokale Verzeichnis zu kopieren: & .\azopy.exe copy "$($container.CloudBlobContainer.Uri.AbsoluteUri)/temp.dat" .\temp.dat

Hochladen von Dateien über das Azure-Portal

Wenn Sie eine GUI-Methode zum Hochladen Ihrer Dateien bevorzugen, dann ist Azure Storage Explorer Ihr Freund. Azure Storage Explorer ist eine der besten grafischen Methoden zur Verwaltung Ihres Blob-Speichers. Sie können den Speicher-Explorer über Ihr Speicherkonto im Azure-Portal aufrufen.

1. Öffnen Sie Ihren bevorzugten Webbrowser und navigieren Sie zum Storage Explorer im Azure-Portal.

2. Klicken Sie auf den Container demo unter BLOB-CONTAINERN, wie unten gezeigt, und klicken Sie dann auf Hochladen, um auf die Hochladen-Blob-Blade (rechte Seite) zuzugreifen.

3. Klicken Sie nun auf das Ordnersymbol im Hochladen-Blob-Panel, um auszuwählen, welche Dateien hochgeladen werden sollen (temp.dat).

4. Klicken Sie schließlich auf Hochladen (blaue Schaltfläche), um Ihre Datei hochzuladen.

Using the Upload blob blade in Azure Storage Explorer

Nach Abschluss des Uploads können Sie die Hochlademeldung schließen und Ihren hochgeladenen Blob sehen, ähnlich wie im Bild unten.

Viewing contents of a blob container in Azure Storage Explorer

Herunterladen von Dateien über das Azure-Portal

Ähnlich wie beim Hochladen von Inhalten in den Blob-Speicher unterstützt Azure das Herunterladen von Inhalten auf verschiedene Arten. Da Sie jedoch gerade eine Datei (temp.dat) über das Azure-Portal hochgeladen haben, können Sie dieselbe Datei mithilfe des Azure Storage Explorers im Azure-Portal herunterladen.

Wählen Sie die Datei (temp.dat) aus, die Sie herunterladen möchten, und klicken Sie auf die Schaltfläche Herunterladen im Azure Storage Explorer, wie unten dargestellt. Dadurch wird ein neues Dialogfeld geöffnet, um den Download zu bestätigen, den Sie im nächsten Schritt sehen werden.

Selecting Files to Download

Klicken Sie jetzt auf die Schaltfläche Hier klicken, um den Download zu starten, um die ausgewählten Dateien herunterzuladen.

Downloading Selected Files from the Blob Storage

Herunterladen von Dateien über PowerShell

Wie beim Hochladen von Dateien haben Sie auch die Möglichkeit, Dateien aus dem Blob-Speicher herunterzuladen, indem Sie Befehle in PowerShell ausführen. Mit PowerShell können Sie die Objekte in einem Container auflisten und sie dann herunterladen.

Führen Sie die unten stehenden Befehle aus, um alle Objekte in Ihrem Container aufzulisten und temp.dat in Ihr lokales Verzeichnis herunterzuladen.

# Liste aller Objekte im $container, um zu überprüfen, ob der Container leer ist
Get-AzStorageBlob -Container $container.Name -Context $storageAccount.Context
# Download des Objekts temp.dat aus dem $container
Get-AzStorageBlobContent -Blob temp.dat -Container $container.Name -Context $storageAccount.Context
Downloading files from Azure Storage Account

Wenn Sie lieber kurzlebige eindeutige Links zum Herunterladen von Dateien verwenden möchten, können Sie Shared Access Signature (SAS)-Tokens verwenden, um einen vorautorisierten Download-Link zu erstellen. Diese Tokens sind einzigartige und private Authentifizierungstoken, die Sie verwenden können, um Ihren Zugriff zu überprüfen.

Führen Sie die untenstehenden Befehle aus, um einen neuen Download-Link für die Datei (temp.dat) zu erstellen, die Sie herunterladen möchten. Der generierte Download-Link läuft nach 10 Sekunden ab und lädt (Invoke-WebRequest $uri) den Inhalt unter Verwendung dieses Links in die Variable $temp herunter.

# Generieren Sie einen neuen Download-Link, der 10 Minuten gültig ist
$uri = New-AzStorageBlobSASToken -Context $storageAccount.Context -Container $container.Name -Blob temp.dat -Permission r -ExpiryTime (Get-Date).AddSeconds(10) -FullUri
# Verwenden Sie den Link, um die Datei in die Variable $temp herunterzuladen
$temp = Invoke-WebRequest $uri

# Alternativ die Datei in das aktuelle Verzeichnis schreiben
Invoke-WebRequest $uri -OutFile .\temp.dat
Download from Azure Storage Account using a SAS token

Hosting einer Webseite im öffentlichen Internet aus Blob-Speicher

Bis zu diesem Punkt haben Sie Anwendungsfälle gesehen, bei denen Dateien von authentifizierten Benutzern heruntergeladen werden. Wussten Sie jedoch, dass Blob-Speicher auch eine ausgezeichnete Option für öffentliche Inhalte bieten kann? Ein Beispiel ist die Verwendung eines Blobs zum Hosten Ihrer Webseiteninhalte, was Sie in dieser Demonstration erreichen werden.

Auch wenn Ihre Webseiteninhalte sowohl während der Übertragung als auch im Ruhezustand verschlüsselt sind, kann jeder auf diese Inhalte zugreifen, wenn der öffentliche Zugriff aktiviert ist.

Da Sie ein anderes Anwendungsszenario einrichten, nutzen Sie einen der Hauptvorteile der öffentlichen Cloud in Bezug auf Skalierbarkeit und Elastizität. Sie können ein neues Speicherkonto für einen bestimmten Anwendungsfall bereitstellen und das Risiko der Verwendung öffentlicher Container begrenzen.

1. Führen Sie den folgenden Befehl aus, um ein neues Speicherkonto zu erstellen, wie Sie es im vierten Schritt des Abschnitts „Erstellen einer Azure-Umgebung“ getan haben. Diesmal geben Sie das zurückgegebene Objekt an die Variable $publicStorageAccount weiter.

$publicStorageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup.ResourceGroupName -Name storage$(Get-Random -Maximum 99999) -Location $resourceGroup.Location -SkuName Standard_LRS
Creating a storage account

Jetzt haben Sie ein dediziertes Speicherkonto für Ihre öffentlichen Inhalte, und Sie können es mit dem folgenden Befehl konfigurieren, um statische Webinhalte zu hosten.

2. Führen Sie anschließend das Cmdlet Enable-AzStorageStaticWebsite aus, um das Speicherkonto ($publicStorageAccount) für Ihren neuen Anwendungsfall zu konfigurieren. Der Parameter -IndexDocument legt die Standard-Webseite fest, die Benutzern angezeigt werden soll. Der Parameter -Context ist das neue Speicherkonto, das Sie gerade erstellt haben.

# Erstellen des $web-Containers und Konfigurieren des Speicherkontos
Enable-AzStorageStaticWebsite -IndexDocument index.html -Context $publicStorageAccount.Context
Enable storage account for website hosting

3. Führen Sie die folgenden Befehle aus, um ein neues HTML-Dokument in Ihrem aktuellen Verzeichnis zu erstellen und dieses Dokument in den Container hochzuladen, der speziell für die Bereitstellung von Webinhalten vorgesehen ist. Der Inhaltstyp ist auf HTML festgelegt (ContentType="text/html"), damit Webbrowser das Dokument ordnungsgemäß interpretieren können.

Wenn Sie das Dokument in einem Webbrowser aufrufen, wird die Nachricht Hello from <storage account name> angezeigt.

# Erstellen Sie eine einfache HTML-Datei
"<body><h1>Hello from $($publicStorageAccount.StorageAccountName)!</h1></body>"|Out-File .\index.html
# Laden Sie die HTML-Datei in den Container für das statische Webhosting hoch und setzen Sie den ContentType auf text/html
Set-AzStorageBlobContent -File .\index.html -Container "`$web" -Properties @{ContentType="text/html"} -Context $publicStorageAccount.Context
Create and upload an HTML document

4. Führen Sie nun den folgenden Befehl aus, um die URL abzurufen, unter der Benutzer auf Ihre Inhalte zugreifen können.

$publicStorageAccount.PrimaryEndpoints.Web
Get the URI of the endpoint

5. Öffnen Sie schließlich die URL in Ihrem Browser. Sie sehen etwas Ähnliches wie auf dem folgenden Screenshot.

Accessing HTML Document from Blob Storage

Reinigung von Ressourcen

Jetzt, da Sie diese neuen Konzepte zur Verwendung von Blob-Speicher getestet haben, möchten Sie Ihre Ressourcen aufräumen. Warum? Auf diese Weise halten Sie Ihr Abonnement sauber. Noch wichtiger ist, dass Sie zusätzliche Kosten vermeiden.

Da sich alle Ressourcen, die Sie in diesem Tutorial verwendet haben, in einer einzigen Ressourcengruppe befinden, können Sie alle Ressourcen aufräumen, indem Sie die Ressourcengruppe löschen.

Ressourcen sind nicht immer in einer einzelnen Ressourcengruppe enthalten, was zeigt, warum der liberale Einsatz logischer Segmentierung vorteilhaft sein kann, insbesondere beim häufigen Testen oder Iterieren.

Führen Sie den Remove-AzResourceGroup-Befehl unten aus und geben Sie die ResourceGroupName-Eigenschaft der $resourceGroup-Variable an, um die Ressourcengruppe und alle Ressourcen darin zu löschen.

Remove-AzResourceGroup -Name $resourceGroup.ResourceGroupName
Delete resource group and contents

Schlussfolgerung

In diesem Tutorial haben Sie das Hochladen und Herunterladen von Dateien zu und von Blobs in der Cloud-Speicherung auf verschiedenen Plattformen behandelt. Sie haben auch gelernt, dass es möglich ist, eine Webseite aus Blob-Speicher zu hosten, auf die Benutzer öffentlich zugreifen können.

Sie können viel mehr mit Blob-Speicher und anderen Speichertypen tun. Wie könnten Sie diese Konzepte erweitern? Möglicherweise arbeiten Sie mit Dateispeicherkonten, bieten serverlose Dateisysteme an oder verwenden Page Blobs für virtuelle Festplatten mit Azure Virtual Machines.

Source:
https://adamtheautomator.com/blob-storage/