Verwalten von Blobcontainern mithilfe der Azure CLI

Microsoft Azure Blob Storage ermöglicht Ihnen das Speichern großer Mengen unstrukturierter Objektdaten. Mithilfe von Blobspeicher können Sie Medien, Inhalte oder Anwendungsdaten für Benutzer sammeln oder verfügbar machen. Da alle Blobdaten in Containern gespeichert werden, müssen Sie einen Speichercontainer erstellen, bevor Sie mit dem Hochladen von Daten beginnen können. Weitere Informationen zum Blobspeicher finden Sie unter Einführung in Azure Blob Storage.

Die Azure CLI ist die plattformübergreifende Befehlszeilenumgebung von Azure zum Verwalten von Azure-Ressourcen. Sie können sie in Ihrem Browser mit Azure Cloud Shell verwenden. Außerdem können Sie sie unter macOS, Linux oder Windows installieren und lokal über die Befehlszeile ausführen.

In diesem Anleitungsartikel erfahren Sie, wie Sie die Azure CLI mit Bash zum Arbeiten mit Containerobjekten verwenden.

Voraussetzungen

Sie benötigen ein Azure-Abonnement, um auf Azure Storage zuzugreifen. Wenn Sie noch kein Abonnement haben, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Der gesamte Zugriff auf Azure Storage erfolgt über ein Speicherkonto. Für diesen Schnellstart erstellen Sie über das Azure-Portal mithilfe von Azure PowerShell oder über die Azure-Befehlszeilenschnittstelle ein Speicherkonto. Hilfe bei der Speicherkontoerstellung finden Sie unter Erstellen eines Speicherkontos.

Vorbereiten der Umgebung für die Azure CLI

  • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

  • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

  • Es empfiehlt sich stets, die neueste Version der Azure CLI zu installieren. Bei Verwendung von Azure Cloud Shell ist die aktuelle Version bereits installiert.

Autorisieren des Zugriffs auf Blobspeicher

Der Zugriff auf Blobspeicher kann über die Azure-Befehlszeilenschnittstelle autorisiert werden. Hierzu können Sie entweder Microsoft Entra-Anmeldeinformationen oder den Speicherkonto-Zugriffsschlüssel verwenden. Die Verwendung von Microsoft Entra-Anmeldeinformationen wird empfohlen, und in den Beispielen dieses Artikels wird ausschließlich Microsoft Entra ID verwendet.

Bei Azure CLI-Befehlen für blobspeicherbezogene Datenvorgänge können Sie mithilfe des Parameters --auth-mode die Art der Autorisierung für einen Vorgang angeben. Legen Sie den Parameter --auth-mode auf login fest, um die Autorisierung mit Microsoft Entra-Anmeldeinformationen zu verwenden. Weitere Informationen finden Sie unter Autorisieren des Zugriffs auf Blob- oder Warteschlangendaten mit der Azure-Befehlszeilenschnittstelle.

Führen Sie den Befehl login aus, um einen Browser zu öffnen und eine Verbindung mit Ihrem Azure-Abonnement herzustellen.

az login

Erstellen eines Containers

Rufen Sie zum Erstellen eines Containers mit der Azure CLI den Befehl az storage container create auf. Das folgende Beispiel veranschaulicht drei Optionen für die Erstellung von Blobcontainern mit dem Befehl az storage container create. Beim ersten Ansatz wird ein einzelner Container erstellt, bei den beiden anderen Vorgehensweisen werden hingegen Bash-Skriptvorgänge genutzt, um die Containererstellung zu automatisieren.

Geben Sie zur Verwendung dieses Beispiels Werte für die Variablen an, und stellen Sie sicher, dass Sie angemeldet sind. Denken Sie daran, die Platzhalterwerte in den spitzen Klammern durch Ihre eigenen Werte zu ersetzen.

#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"

# Approach 1: Create a container
az storage container create \
    --name $containerName \
    --account-name $storageAccount \
    --auth-mode login

# Approach 2: Create containers with a loop
for value in {2..5}
do
    az storage container create \
        --name $containerPrefix$value \
        --account-name $storageAccount \
        --auth-mode login
done

# Approach 3: Create containers by splitting multiple values
containerList="${containerPrefix}6 ${containerPrefix}7 ${containerPrefix}8"
for container in $containerList
do
    az storage container create \
        --name $container \
        --account-name $storageAccount \
        --auth-mode login
done

Auflisten von Containern

Verwenden Sie den Befehl az storage container list, um eine Liste der Speichercontainer abzurufen. Übergeben Sie die Zeichenfolge als Parameterwert für --prefix, um eine Liste mit Containern zurückzugeben, deren Namen mit einer bestimmten Zeichenfolge beginnen.

Mit dem Parameter --num-results kann die Anzahl der von der Anforderung zurückgegebenen Container begrenzt werden. Azure Storage begrenzt die Anzahl der von einem einzelnen Auflistungsvorgang zurückgegebenen Container auf 5.000. Durch diesen Grenzwert wird sichergestellt, dass verwaltbare Datenmengen abgerufen werden. Wenn die Anzahl der zurückgegebenen Container entweder den Wert --num-results oder den Dienstgrenzwert überschreitet, wird ein Fortsetzungstoken zurückgegeben. Mit diesem Token können Sie mehrere Anforderungen verwenden, um eine beliebige Anzahl von Containern abzurufen.

Sie können auch den Parameter --query verwenden, um eine JMESPath-Abfrage für die Ergebnisse von Befehlen auszuführen. JMESPath ist eine Abfragesprache für JSON, die es Ihnen ermöglicht, von der CLI-Ausgabe zurückgegebene Daten auszuwählen und zu ändern. Abfragen werden für die JSON-Ausgabe ausgeführt, bevor sie formatiert werden können. Weitere Informationen finden Sie unter Abfragen einer Azure CLI-Befehlsausgabe mithilfe einer JMESPath-Abfrage.

Im folgenden Beispiel wird zunächst die maximale Anzahl von Containern (vorbehaltlich des Dienstgrenzwerts) aufgeführt. Als Nächstes werden drei Container aufgeführt, deren Namen mit dem Präfix container- beginnen. Dazu werden Werte für die Parameter --num-results und --prefix angegeben. Schließlich wird ein einzelner Container aufgelistet, indem ein bekannter Containername für den Parameter --prefix angegeben wird.

Informieren Sie sich ausführlicher über az storage container list.

#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"
containerName="demo-container-1"
numResults="3"

# Approach 1: List maximum containers
az storage container list \
    --account-name $storageAccount \
    --auth-mode login

# Approach 2: List a defined number of named containers
az storage container list \
    --prefix $containerPrefix \
    --num-results $numResults \
    --account-name $storageAccount \
    --auth-mode login

# Approach 3: List an individual container
az storage container list \
    --prefix $containerPrefix \
    --query "[?name=='$containerName']" \
    --account-name $storageAccount \
    --auth-mode login

Lesen von Containereigenschaften und -metadaten

Ein Container macht sowohl Systemeigenschaften als auch benutzerdefinierte Metadaten verfügbar. Systemeigenschaften sind in jeder Blobspeicherressource vorhanden. Einige davon sind schreibgeschützt, während andere gelesen oder festgelegt werden können. Darüber hinaus lassen sich einige Systemeigenschaften bestimmten HTTP-Standardheadern zuordnen.

Benutzerdefinierte Metadaten bestehen aus mindestens einem Name/Wert-Paar, das Sie für eine Blobspeicherressource angeben. Metadaten können verwendet werden, um zusätzliche Werte mit der Ressource zu speichern. Metadatenwerte sind nur für Ihre eigenen Zwecke bestimmt und wirken sich nicht auf das Verhalten der Ressource aus.

Containereigenschaften

Rufen Sie zum Anzeigen der Eigenschaften eines Containers mit der Azure CLI den Befehl az storage container show auf.

Im folgenden Beispiel zeigt der erste Ansatz die Eigenschaften eines einzelnen benannten Containers an. Danach werden alle Container mit dem Präfix demo-container- abgerufen und durchlaufen, um ihre Eigenschaften aufzulisten. Denken Sie daran, die Platzhalterwerte durch Ihre eigenen Werte zu ersetzen.

#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"
containerName="demo-container-1"

# Show a named container's properties
az storage container show \
    --name $containerName \
    --account-name $storageAccount \
    --auth-mode login

# List several containers and show their properties
containerList=$(az storage container list \
    --query "[].name" \
    --prefix $containerPrefix \
    --account-name $storageAccount \
    --auth-mode login \
    --output tsv)

for row in $containerList
do
  tmpRow=$(echo $row | sed -e 's/\r//g')
  az storage container show --name $tmpRow --account-name $storageAccount --auth-mode login
done

Lesen und Schreiben von Containermetadaten

Benutzer, die in ihrem Speicherkonto Tausende Objekte gespeichert haben, können bestimmte Container anhand ihrer Metadaten schnell finden. Zum Lesen der Metadaten verwenden Sie den Befehl az storage container metadata show. Zum Aktualisieren von Metadaten müssen Sie den Befehl az storage container metadata update aufrufen. Die Methode akzeptiert nur durch Leerzeichen getrennte Schlüssel-Wert-Paare. Weitere Informationen finden Sie in der Dokumentation zu az storage container metadata.

Im ersten Beispiel unten werden die Metadaten eines benannten Containers aktualisiert und anschließend abgerufen. Das zweite Beispiel durchläuft die Liste der Container, die dem Wert -prefix entsprechen. Für Container mit Namen, die gerade Zahlen enthalten, werden die Metadaten mit den in der Variablen Metadaten enthaltenen Werten festgelegt.

#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"

# Create metadata string
metadata="key=value pie=delicious"

# Update named container metadata
az storage container metadata update \
    --name $containerName \
    --metadata $metadata \
    --account-name $storageAccount \
    --auth-mode login

# Display metadata
az storage container metadata show \
    --name $containerName \
    --account-name $storageAccount \
    --auth-mode login

# Get list of containers
containerList=$(az storage container list \
    --query "[].name" \
    --prefix $containerPrefix \
    --account-name $storageAccount \
    --auth-mode login \
    --output tsv)

# Update and display metadata
for row in $containerList
do
  #Get the container's number
  tmpName=$(echo $row | sed -e 's/\r//g')
  if [ `expr ${tmpName: ${#containerPrefix}} % 2` == 0 ]
  then
    az storage container metadata update \
        --name $tmpName \
        --metadata $metadata \
        --account-name $storageAccount \
        --auth-mode login
    
    echo $tmpName

    az storage container metadata show \
    --name $tmpName \
    --account-name $storageAccount \
    --auth-mode login    
  fi
done

Löschen von Containern

Abhängig von Ihrem Anwendungsfall können Sie mit dem Befehl az storage container delete einen einzelnen Container oder eine Gruppe von Containern löschen. Beim Löschen einer Liste mit Containern müssen Sie bedingte Vorgänge verwenden, wie in den folgenden Beispielen gezeigt.

Warnung

Durch Ausführen der folgenden Beispiele können Container und Blobs endgültig gelöscht werden. Microsoft empfiehlt die Aktivierung des vorläufigen Löschens für Container, um Container und Blobs vor versehentlichem Löschen zu schützen. Weitere Informationen finden Sie unter Vorläufiges Löschen für Container.

#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"

# Delete a single named container
az storage container delete \
    --name $containerName \
    --account-name $storageAccount \
    --auth-mode login

# Delete containers by iterating a loop
list=$(az storage container list \
    --query "[].name" \
    --prefix $containerPrefix \
    --account-name $storageAccount \
    --auth-mode login \
    --output tsv)
for row in $list
do
    tmpName=$(echo $row | sed -e 's/\r//g')
    az storage container delete \
    --name $tmpName \
    --account-name $storageAccount \
    --auth-mode login
done

Wenn Sie für Ihr Speicherkonto vorläufiges Löschen für Container aktiviert haben, können gelöschte Container wiederhergestellt werden. Wenn die Datenschutzoption für vorläufiges Löschen in Ihrem Speicherkonto aktiviert ist, gibt der Parameter --include-deleted Container zurück, die innerhalb des zugewiesenen Aufbewahrungszeitraums gelöscht wurden. Der Parameter --include-deleted kann nur zusammen mit dem Parameter --prefix zum Zurückgeben von Containern verwendet werden. Weitere Informationen zum vorläufigen Löschen finden Sie in dem Artikel Vorläufiges Löschen für Container.

Verwenden Sie das folgende Beispiel, um eine Liste von Containern abzurufen, die innerhalb des zugewiesenen Aufbewahrungszeitraums des Speicherkontos gelöscht wurden.

#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"

# Retrieve a list of containers including those recently deleted
az storage container list \
    --prefix $containerPrefix \
    --include-deleted \
    --account-name $storageAccount\
    --auth-mode login

Wiederherstellen eines vorläufig gelöschten Containers

Wie im Abschnitt Auflisten von Containern erwähnt, können Sie die Datenschutzoption für das vorläufige Löschen in Ihrem Speicherkonto konfigurieren. Wenn diese Option aktiviert ist, können Container, die innerhalb des zugewiesenen Aufbewahrungszeitraums gelöscht wurden, wiederhergestellt werden. Bevor Sie dieses Beispiel nutzen können, müssen Sie die Option für das vorläufige Löschen aktivieren und für mindestens eines Ihrer Speicherkonten konfigurieren.

In den folgenden Beispielen wird erläutert, wie ein vorläufig gelöschter Container mit dem Befehl az storage container restore wiederhergestellt wird. Sie müssen Werte für die Parameter --name und --version angeben, um sicherzustellen, dass die richtige Version des Containers wiederhergestellt wird. Wenn Sie die Versionsnummer nicht kennen, können Sie sie mit dem Befehl az storage container list abrufen, wie im ersten Beispiel gezeigt. Im zweiten Beispiel werden alle gelöschten Container in einem bestimmten Speicherkonto ermittelt und wiederhergestellt.

Weitere Informationen zur Datenschutzoption für das vorläufigen Löschen finden Sie im Artikel Vorläufiges Löschen für Container.

#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"

# Restore an individual named container
containerVersion=$(az storage container list \
    --account-name $storageAccount \
    --query "[?name=='$containerName'].[version]" \
    --auth-mode login \
    --output tsv \
    --include-deleted | sed -e 's/\r//g')

az storage container restore \
    --name $containerName \
    --deleted-version $containerVersion \
    --account-name $storageAccount \
    --auth-mode login

# Restore a list of deleted containers
containerList=$(az storage container list \
    --account-name $storageAccount \
    --include-deleted \
    --auth-mode login \
    --query "[?deleted].{name:name,version:version}" \
    -o json)

for row in $(echo "${containerList}" | jq -c '.[]' )
do
    tmpName=$(echo $row | jq -r '.name')
    tmpVersion=$(echo $row | jq -r '.version')
    az storage container restore \
        --account-name $storageAccount \
        --name $tmpName \
        --deleted-version $tmpVersion \
        --auth-mode login
done

Abrufen einer Shared Access Signature für einen Container

Eine Shared Access Signature (SAS) ermöglicht delegierten Zugriff auf Azure-Ressourcen. Mit einer Shared Access Signature können Sie genau steuern, wie ein Client auf Ihre Daten zugreifen kann. So können Sie beispielsweise angeben, welche Ressourcen für den Client verfügbar sind. Sie können auch die Arten von Vorgängen einschränken, die der Client ausführen kann, und das Zeitintervall angeben, in dem die SAS gültig ist.

Eine SAS wird häufig verwendet, um temporären und sicheren Zugriff auf einen Client zu ermöglichen, der normalerweise nicht über Berechtigungen verfügt. Zum Generieren einer Dienst- oder Konto-SAS müssen Sie Werte für die Parameter --account-name und --account-key angeben. Ein Beispiel für dieses Szenario wäre ein Dienst, der Benutzern das Lesen und Schreiben eigener Daten in Ihrem Speicherkonto ermöglicht.

Azure Storage unterstützt drei Arten von Shared Access Signatures: Benutzerdelegierung, Dienst-SAS und Konto-SAS. Weitere Informationen zu SAS (Shared Access Signatures) finden Sie im Artikel Gewähren von eingeschränktem Zugriff auf Azure Storage-Ressourcen mithilfe von SAS (Shared Access Signature).

Achtung

Jeder Client, der über eine gültige SAS verfügt, kann auf Daten in Ihrem Speicherkonto zugreifen, sofern von dieser SAS zugelassen. Es ist wichtig, eine SAS vor böswilliger oder unbeabsichtigter Verwendung zu schützen. Verteilen Sie eine SAS mit Diskretion, und halten Sie einen Plan für den Widerruf einer kompromittierten SAS bereit.

Das folgende Beispiel veranschaulicht das Konfigurieren einer Dienst-SAS für einen bestimmten Container mithilfe des Befehls az storage container generate-sas. Da eine Dienst-SAS generiert wird, ruft das Beispiel zuerst den Speicherkontoschlüssel ab, der als Wert für --account-key übergeben werden soll.

Im Beispiel wird die SAS mit Start- und Ablaufzeiten und einem Protokoll konfiguriert. Darüber hinaus werden in der SAS mithilfe des Parameters --permissions die Berechtigungen zum Löschen, Lesen, Schreiben und Auflisten angegeben. Die vollständige Tabelle der Berechtigungen finden Sie im Artikel Erstellen einer Dienst-SAS.

Kopieren Sie den Wert für das SAS-Token des Blobs, und fügen Sie ihn an einem sicheren Ort ein. Dieser Wert wird nur einmal angezeigt und kann nicht mehr abgerufen werden, nachdem Bash geschlossen wurde. Fügen Sie zum Erstellen der SAS-URL das SAS-Token (URI) an die URL für den Speicherdienst an.

#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
permissions="drwl"
expiry=`date -u -d "30 minutes" '+%Y-%m-%dT%H:%MZ'`

accountKey=$(az storage account keys list \
    --account-name $storageAccount \
    --query "[?permissions == 'FULL'].[value]" \
    --output tsv)

accountKey=$( echo $accountKey | cut -d' ' -f1 )
 
az storage container generate-sas \
    --name $containerName \
    --https-only \
    --permissions dlrw \
    --expiry $expiry \
    --account-key $accountKey \
    --account-name $storageAccount

Hinweis

Das von der Azure CLI zurückgegebene SAS-Token enthält das Trennzeichen („?“) für die URL-Abfragezeichenfolge nicht. Wenn Sie das SAS-Token an eine Ressourcen-URL anfügen, denken Sie daran, das Trennzeichen an die Ressourcen-URL anzufügen, bevor Sie das SAS-Token anfügen.

Nächste Schritte

In diesem Anleitungsartikel haben Sie erfahren, wie Sie Container in Blob Storage verwalten. Wählen Sie eine der folgenden Optionen, um mehr über das Arbeiten mit Blob Storage mithilfe von Azure CLI zu erfahren.