Freigeben über


Verwalten von BLOB-Containern mit Azure CLI

Mit Microsoft Azure Blob Storage können Sie große Mengen unstrukturierter Objektdaten speichern. Sie können BLOB-Speicher verwenden, um Medien-, Inhalts- oder Anwendungsdaten für Benutzer zu sammeln oder verfügbar zu machen. Da alle BLOB-Daten in Containern gespeichert sind, müssen Sie einen Speichercontainer erstellen, bevor Sie mit dem Hochladen von Daten beginnen können. Weitere Informationen zum Blobspeicher finden Sie in der Einführung in Azure Blob Storage.

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

In diesem Artikel erfahren Sie, wie Sie die Azure CLI mit Bash verwenden, um mit Containerobjekten zu arbeiten.

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

  • Es ist immer ratsam, die neueste Version der Azure CLI zu installieren. Wenn Sie Azure Cloud Shell verwenden, ist die neueste Version bereits installiert.

Autorisieren des Zugriffs auf BLOB-Speicher

Sie können den Zugriff auf Blob Storage über die Azure CLI entweder mit Microsoft Entra-Anmeldeinformationen oder mithilfe des Zugriffsschlüssels für das Speicherkonto autorisieren. Die Verwendung von Microsoft Entra-Anmeldeinformationen wird empfohlen, und die Beispiele in diesem Artikel verwenden ausschließlich die Microsoft Entra-ID.

Azure CLI-Befehle für Datenvorgänge für Blob Storage unterstützen den --auth-mode Parameter, mit dem Sie angeben können, wie ein bestimmter Vorgang autorisiert werden soll. Legen Sie den --auth-mode-Parameter auf login fest, um ihn mit Microsoft Entra-Anmeldeinformationen zu autorisieren. Weitere Informationen finden Sie unter Autorisieren des Zugriffs auf Blob- oder Warteschlangendaten mit Azure CLI.

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

az login

Einen Container erstellen

Rufen Sie zum Erstellen eines Containers mit Azure CLI den Befehl "az storage container create " auf. Im folgenden Beispiel werden drei Optionen für die Erstellung von BLOB-Containern mit dem az storage container create Befehl veranschaulicht. Der erste Ansatz erstellt einen einzelnen Container, während die verbleibenden beiden Ansätze Bash-Skriptingvorgänge verwenden, um die Containererstellung zu automatisieren.

Geben Sie zum Verwenden 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 az storage container list Befehl, um eine Liste von Speichercontainern abzurufen. Um eine Liste von Containern zurückzugeben, deren Namen mit einer bestimmten Zeichenfolge beginnen, übergeben Sie die Zeichenfolge als --prefix Parameterwert.

Der --num-results Parameter kann verwendet werden, um die Anzahl der von der Anforderung zurückgegebenen Container einzuschränken. Azure Storage beschränkt die Anzahl von Containern, die von einem einzelnen Eintragsvorgang auf 5000 zurückgegeben werden. Dieser Grenzwert stellt sicher, dass verwaltbare Datenmengen abgerufen werden. Wenn die Anzahl der zurückgegebenen Container entweder den --num-results Wert 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 den --query Parameter auch verwenden, um eine JMESPath-Abfrage für die Ergebnisse von Befehlen auszuführen. JMESPath ist eine Abfragesprache für JSON, mit der Sie von der CLI-Ausgabe zurückgegebene Daten auswählen und ändern können. Abfragen werden für die JSON-Ausgabe ausgeführt, bevor sie formatiert werden kann. Weitere Informationen finden Sie unter Abfragen der Azure CLI-Befehlsausgabe mithilfe einer JMESPath-Abfrage.

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

Lesen Sie mehr über die Az Storage Container-Liste.

#!/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 für jede BLOB-Speicherressource vorhanden. Einige davon sind schreibgeschützt, während andere gelesen oder festgelegt werden können. Unter der Haube sind einige Systemeigenschaften bestimmten standardmäßigen HTTP-Headern zugeordnet.

Benutzerdefinierte Metadaten bestehen aus einem oder mehreren Namenwertpaaren, die Sie für eine BLOB-Speicherressource angeben. Sie können Metadaten verwenden, 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 den Befehl "az storage container show " auf, um die Eigenschaften eines Containers mit Azure CLI anzuzeigen.

Im folgenden Beispiel zeigt der erste Ansatz die Eigenschaften eines einzelnen benannten Containers an. Danach ruft es alle Container mit dem Democontainerpräfix ab und durchläuft sie und listet ihre Eigenschaften auf. 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 mit vielen Tausenden von Objekten innerhalb ihres Speicherkontos können schnell bestimmte Container basierend auf ihren Metadaten suchen. Um die Metadaten zu lesen, verwenden Sie den az storage container metadata show Befehl. Zum Aktualisieren von Metadaten müssen Sie den az storage container metadata update Befehl aufrufen. Die Methode akzeptiert nur leerzeichentrennte Schlüssel-Wert-Paare. Weitere Informationen finden Sie in der Az Storage-Containermetadatendokumentation .

Das erste Beispiel unten aktualisiert und ruft dann die Metadaten eines benannten Containers ab. Das zweite Beispiel durchläuft die Liste der Container, die dem Wert -prefix entsprechen. Container mit Namen, die gerade Zahlen enthalten, haben ihren Metadatensatz mit Werten, die in der Metadatenvariable enthalten sind.

#!/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

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

Warnung

Wenn Sie die folgenden Beispiele ausführen, können Container und Blobs endgültig gelöscht werden. Microsoft empfiehlt, container soft delete zu aktivieren, um Container und Blobs vor versehentlichem Löschen zu schützen. Weitere Informationen finden Sie unter Weiches 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 container soft delete für Ihr Speicherkonto aktiviert ist, ist es möglich, Container abzurufen, die gelöscht wurden. Wenn die Soft Delete-Datenschutzoption Ihres Speicherkontos aktiviert ist, gibt der --include-deleted-Parameter Container zurück, die innerhalb des zugehörigen Aufbewahrungszeitraums gelöscht wurden. Der --include-deleted Parameter kann nur verwendet werden, um Container zurückzugeben, wenn er mit dem --prefix Parameter verwendet wird. Weitere Informationen zu Soft Delete finden Sie im Artikel "Soft Delete für Container".

Verwenden Sie das folgende Beispiel, um eine Liste von Containern abzurufen, die innerhalb des zugeordneten 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 weich gelöschten Containers

Wie im Abschnitt "List containers" erwähnt, können Sie den Soft Delete-Schutz für Ihr Speicherkonto konfigurieren. Wenn diese Option aktiviert ist, können Container, die innerhalb des zugehörigen Aufbewahrungszeitraums gelöscht wurden, wiederhergestellt werden. Bevor Sie diesem Beispiel folgen können, müssen Sie das vorläufige Löschen aktivieren und auf mindestens einem Ihrer Speicherkonten konfigurieren.

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

Weitere Informationen zur Option für Soft Delete-Datenschutz finden Sie im Artikel "Soft Delete 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 freigegebenen Zugriffssignatur für einen Container

Eine freigegebene Zugriffssignatur (SHARED Access Signature, SAS) bietet delegierten Zugriff auf Azure-Ressourcen. Mit einem SAS können Sie präzise steuern, wie ein Client auf Ihre Daten zugreifen kann. Sie können z. B. angeben, welche Ressourcen für den Client verfügbar sind. Sie können auch die Typen von Vorgängen einschränken, die der Client ausführen kann, und das Intervall angeben, über das die SAS gültig ist.

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

Azure Storage unterstützt drei Arten von freigegebenen Zugriffssignaturen: Benutzerdelegierung, Dienst und Konto-SAS. Weitere Informationen zu freigegebenen Zugriffssignaturen finden Sie im Artikel " Eingeschränkter Zugriff auf Azure Storage-Ressourcen mit freigegebenen Zugriffssignaturen" .

Vorsicht

Jeder Client, der über ein gültiges SAS verfügt, kann auf Daten in Ihrem Speicherkonto zugreifen, wie es von dieser SAS erlaubt ist. Es ist wichtig, ein SAS vor böswilliger oder unbeabsichtigter Verwendung zu schützen. Verwenden Sie die Diskretion bei der Verteilung einer SAS und haben Sie einen Plan zum Widerrufen einer kompromittierten SAS.

Im folgenden Beispiel wird der Prozess der Konfiguration einer Dienst-SAS für einen bestimmten Container mithilfe des az storage container generate-sas Befehls veranschaulicht. Da ein Dienst-SAS generiert wird, ruft das Beispiel zuerst den Speicherkontoschlüssel ab, um diesen als Wert für --account-key zu verwenden.

Im Beispiel wird das SAS mit Start- und Ablaufzeiten und einem Protokoll konfiguriert. Außerdem werden die Berechtigungen "Löschen", "Lesen", "Schreiben" und "Listen " im SAS mithilfe des --permissions Parameters angegeben. Im Artikel " Dienst-SAS erstellen " können Sie auf die vollständige Berechtigungstabelle verweisen.

Kopieren sie den Blob SAS-Tokenwert an einem sicheren Speicherort, und fügen Sie ihn ein. Es wird nur einmal angezeigt und kann nicht abgerufen werden, sobald Bash geschlossen ist. Um die SAS-URL zu erstellen, fügen Sie 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 nicht das Trennzeichen ('?') für die URL-Abfragezeichenfolge. Wenn Sie das SAS-Token an eine Ressourcen-URL anfügen, denken Sie daran, das Trennzeichen vor dem Anfügen des SAS-Tokens an die Ressourcen-URL anzufügen.

Nächste Schritte

In diesem Artikel mit Anleitungen haben Sie erfahren, wie Sie Container in Blob Storage verwalten. Wenn Sie mehr über das Arbeiten mit BLOB-Speicher mithilfe der Azure CLI erfahren möchten, wählen Sie unten eine Option aus.