Partager via


Gérer des conteneurs de blobs avec Azure CLI

Le Stockage Blob Microsoft Azure vous permet de stocker de grandes quantités de données d’objet non structurées. Vous pouvez utiliser le Stockage Blob pour collecter ou exposer des données multimédias, de contenu ou d’application aux utilisateurs. Étant donné que toutes les données blob sont stockées dans des conteneurs, vous devez créer un conteneur de stockage avant de pouvoir commencer à charger des données. Pour davantage d'informations sur le stockage Blob, consultez l'Introduction au stockage Blob Azure.

Azure CLI est l’expérience en ligne de commande multiplateforme d’Azure pour la gestion des ressources Azure. Vous pouvez l’utiliser dans votre navigateur avec Azure Cloud Shell. Vous pouvez également l’installer sur macOS, Linux ou Windows et l’exécuter localement à partir de la ligne de commande.

Dans cet article pratique, vous allez apprendre à utiliser Azure CLI avec Bash pour utiliser des objets conteneur.

Prerequisites

Pour accéder à Stockage Azure, vous avez besoin d’un abonnement Azure. Si vous n’avez pas d’abonnement, vous pouvez créer un compte gratuit avant de commencer.

Tous les accès à Stockage Azure se font via un compte de stockage. Pour ce guide de démarrage rapide, créez un compte de stockage à l’aide du portail Azure, d’Azure PowerShell ou de l’interface Azure CLI. Pour obtenir de l’aide sur la création d’un compte de stockage, consultez Créer un compte de stockage.

Préparation de votre environnement pour Azure CLI

  • Il est toujours judicieux d’installer la dernière version d’Azure CLI. Si vous utilisez Azure Cloud Shell, la dernière version est déjà installée.

Autoriser l’accès au stockage Blob

Vous pouvez autoriser l’accès au stockage Blob depuis l’interface de ligne de commande Azure, soit avec les informations d’identification Microsoft Entra, soit à l’aide de la clé d’accès du compte de stockage. L’utilisation des informations d’identification Microsoft Entra est recommandée et les exemples de cet article utilisent exclusivement l’ID Microsoft Entra.

Les commandes Azure CLI pour les opérations de données sur le stockage Blob prennent en charge le --auth-mode paramètre, ce qui vous permet de spécifier comment autoriser une opération donnée. Définissez le paramètre --auth-mode sur login pour autoriser avec les informations d’identification Microsoft Entra. Pour plus d’informations, consultez Autoriser l’accès aux données d’objet blob et de file d’attente avec Azure CLI.

Exécutez la login commande pour ouvrir un navigateur et vous connecter à votre abonnement Azure.

az login

Créer un conteneur

Pour créer un conteneur avec Azure CLI, appelez la commande az storage container create . L’exemple suivant illustre trois options pour la création de conteneurs d’objets blob avec la az storage container create commande. La première approche crée un conteneur unique, tandis que les deux approches restantes utilisent des opérations de script Bash pour automatiser la création de conteneurs.

Pour utiliser cet exemple, fournissez des valeurs pour les variables et vérifiez que vous vous êtes connecté. N’oubliez pas de remplacer les valeurs d’espace réservé entre crochets par vos propres valeurs.

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

Répertorier les conteneurs

Utilisez la az storage container list commande pour récupérer une liste de conteneurs de stockage. Pour renvoyer une liste de conteneurs dont les noms commencent par une chaîne de caractères donnée, passez la chaîne en tant que valeur de --prefix paramètre.

Le --num-results paramètre peut être utilisé pour limiter le nombre de conteneurs retournés par la requête. Stockage Azure limite le nombre de conteneurs retournés par une seule opération de référencement à 5 000. Cette limite garantit que les quantités gérables de données sont récupérées. Si le nombre de conteneurs retournés dépasse la valeur ou la --num-results limite de service, un jeton de continuation est retourné. Ce jeton vous permet d’utiliser plusieurs requêtes pour récupérer n’importe quel nombre de conteneurs.

Vous pouvez également utiliser le --query paramètre pour exécuter une requête JMESPath sur les résultats des commandes. JMESPath est un langage de requête pour JSON qui vous permet de sélectionner et de modifier les données retournées à partir de la sortie CLI. Les requêtes sont exécutées sur la sortie JSON avant de pouvoir être mises en forme. Pour plus d’informations, consultez Comment interroger la sortie de commande Azure CLI à l’aide d’une requête JMESPath.

L’exemple suivant répertorie d’abord le nombre maximal de conteneurs (soumis à la limite de service). Ensuite, il répertorie trois conteneurs dont les noms commencent par le préfixe container- en fournissant des valeurs pour les paramètres --num-results et --prefix. Enfin, un seul conteneur est répertorié en fournissant un nom de conteneur connu au --prefix paramètre.

En savoir plus sur la liste des conteneurs de stockage Azure.

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

Lire les propriétés et métadonnées du conteneur

Un conteneur expose à la fois les propriétés système et les métadonnées définies par l’utilisateur. Les propriétés système existent sur chaque ressource de stockage blob. Certaines propriétés sont en lecture seule, tandis que d’autres peuvent être lues ou définies. Sous les couvertures, certaines propriétés système correspondent à certains en-têtes HTTP standard.

Les métadonnées définies par l’utilisateur se composent d’une ou plusieurs paires nom-valeur que vous spécifiez pour une ressource de stockage d’objets blob. Vous pouvez utiliser des métadonnées pour stocker des valeurs supplémentaires avec la ressource. Les valeurs de métadonnées sont destinées à votre usage personnel et n’affectent pas le comportement de la ressource.

Propriétés du conteneur

Pour afficher les propriétés d’un conteneur avec Azure CLI, appelez la commande az storage container show .

Dans l’exemple suivant, la première approche affiche les propriétés d’un conteneur nommé unique. Ensuite, il récupère tous les conteneurs avec le préfixe demo-container- et itère à travers eux, en répertoriant leurs propriétés. N’oubliez pas de remplacer les valeurs d’espace réservé par vos propres valeurs.

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

Lire et écrire des métadonnées de conteneur

Les utilisateurs qui ont plusieurs milliers d’objets au sein de leur compte de stockage peuvent rapidement localiser des conteneurs spécifiques en fonction de leurs métadonnées. Pour lire les métadonnées, vous allez utiliser la az storage container metadata show commande. Pour mettre à jour les métadonnées, vous devez appeler la az storage container metadata update commande. La méthode accepte uniquement les paires clé-valeur séparées par un espace. Pour plus d’informations, consultez la documentation relative aux métadonnées du conteneur de stockage az .

Le premier exemple ci-dessous met à jour, puis récupère les métadonnées d’un conteneur nommé. Le deuxième exemple itère la liste des conteneurs correspondant à la -prefix valeur. Les conteneurs avec des noms contenant des nombres pairs ont leur jeu de métadonnées avec des valeurs contenues dans la variable de métadonnées .

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

Supprimer des conteneurs

Selon votre cas d’usage, vous pouvez supprimer un seul conteneur ou un groupe de conteneurs avec la az storage container delete commande. Lorsque vous supprimez une liste de conteneurs, vous devez utiliser des opérations conditionnelles, comme indiqué dans les exemples ci-dessous.

Avertissement

L’exécution des exemples suivants peut supprimer définitivement des conteneurs et des objets blob. Microsoft recommande d’activer la suppression réversible de conteneur pour protéger les conteneurs et les objets blob contre la suppression accidentelle. Pour plus d’informations, consultez Suppression réversible de conteneurs.

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

Si la suppression réversible de conteneur est activée pour votre compte de stockage, il est possible de récupérer des conteneurs qui ont été supprimés. Si l’option de protection des données de suppression réversible de votre compte de stockage est activée, le --include-deleted paramètre retourne les conteneurs supprimés au cours de la période de rétention associée. Le --include-deleted paramètre ne peut être utilisé que pour retourner des conteneurs lorsqu’il est utilisé avec le --prefix paramètre. Pour en savoir plus sur la suppression réversible, reportez-vous à l’article Suppression réversible pour conteneurs .

Utilisez l’exemple suivant pour récupérer une liste de conteneurs supprimés dans la période de rétention associée au compte de stockage.

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

Restaurer un conteneur supprimé temporairement

Comme mentionné dans la section Répertorier les conteneurs , vous pouvez configurer l’option de protection des données de suppression réversible sur votre compte de stockage. Lorsque cette option est activée, il est possible de restaurer des conteneurs supprimés au cours de la période de rétention associée. Avant de pouvoir suivre cet exemple, vous devez activer la suppression réversible et la configurer sur au moins un de vos comptes de stockage.

Les exemples suivants expliquent comment restaurer un conteneur supprimé de manière réversible avec la az storage container restore commande. Vous devez fournir des valeurs pour les paramètres --name et --version afin de vous assurer que la version correcte du conteneur est restaurée. Si vous ne connaissez pas le numéro de version, vous pouvez utiliser la commande az storage container list pour le récupérer, comme montré dans le premier exemple. Le deuxième exemple recherche et restaure tous les conteneurs supprimés dans un compte de stockage spécifique.

Pour en savoir plus sur l'option de protection des données "soft delete", reportez-vous à l'article Soft delete pour conteneurs.

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

Obtenir une signature d’accès partagé pour un conteneur

Une signature d’accès partagé (SAP) fournit un accès délégué aux ressources Azure. Une SAP vous donne un contrôle granulaire sur la façon dont un client peut accéder à vos données. Par exemple, vous pouvez spécifier les ressources disponibles pour le client. Vous pouvez également limiter les types d’opérations que le client peut effectuer et spécifier l’intervalle sur lequel la SAP est valide.

Une SAP est couramment utilisée pour fournir un accès temporaire et sécurisé à un client qui n’aurait pas normalement des autorisations. Pour générer un service ou un compte SAP, vous devez fournir des valeurs pour les paramètres --account-name et --account-key. Un exemple de ce scénario serait un service qui permet aux utilisateurs de lire et d’écrire leurs propres données dans votre compte de stockage.

Stockage Azure prend en charge trois types de signatures d’accès partagé : SAP de délégation d’utilisateur, de service et de compte. Pour plus d’informations sur les signatures d’accès partagé, consultez l’article Accorder un accès limité aux ressources de stockage Azure grâce aux signatures d’accès partagé.

Caution

Tout client disposant d’une SAP valide peut accéder aux données de votre compte de stockage comme autorisé par cette SAP. Il est important de protéger une SAP contre une utilisation malveillante ou involontaire. Utilisez la discrétion pour distribuer une SAP et disposer d’un plan en place pour révoquer une SAP compromise.

L’exemple suivant illustre le processus de configuration d’une SAP de service pour un conteneur spécifique à l’aide de la az storage container generate-sas commande. Étant donné qu’il génère un service SAP, l’exemple récupère d’abord la clé de compte de stockage à transmettre comme valeur --account-key.

L’exemple configure la SAP avec des heures de début et d’expiration et un protocole. Il spécifie également les autorisations de suppression, de lecture, d’écriture et de liste dans la SAP à l’aide du --permissions paramètre. Vous pouvez référencer la table complète des autorisations dans l’article Créer une SAP de service .

Copiez et collez la valeur du jeton SAS Blob dans un emplacement sécurisé. Elle ne s’affiche qu’une seule fois et ne peut pas être récupérée une fois que Bash est fermé. Pour construire l’URL SAS, ajoutez le jeton SAS (URI) à l’URL du service de stockage.

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

Note

Le jeton SAP retourné par Azure CLI n’inclut pas le caractère délimiteur (' ?') pour la chaîne de requête d’URL. Si vous ajoutez le jeton SAP à une URL de ressource, n’oubliez pas d’ajouter le caractère délimiteur à l’URL de la ressource avant d’ajouter le jeton SAP.

Étapes suivantes

Dans cet article pratique, vous avez appris à gérer des conteneurs dans le stockage Blob. Pour en savoir plus sur l’utilisation du stockage Blob à l’aide d’Azure CLI, sélectionnez une option ci-dessous.