Créer un verrou de ressource pour une base de données et un conteneur Azure Cosmos DB for NoSQL à l’aide d’Azure CLI

S’APPLIQUE À : NoSQL

Le script dans cet article montre comment effectuer des opérations de verrouillage des ressources pour un conteneur et une base de données SQL.

Important

Pour créer des verrous de ressources, vous devez être membre du rôle propriétaire dans l’abonnement.

Les verrous de ressources ne fonctionnent pas pour les modifications apportées par les utilisateurs qui se connectent via un kit de développement logiciel (SDK) Azure Cosmos DB, les outils qui se connectent via des clés de compte ou le Portail Azure, à moins que le compte Azure Cosmos DB soit d’abord verrouillé avec la propriété disableKeyBasedMetadataWriteAccess activée. Pour en savoir plus sur l’activation de cette propriété, consultez Prévention des modifications à partir des SDK.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Prérequis

  • Cet article nécessite la version 2.9.1 ou ultérieure d’Azure CLI. Si vous utilisez Azure Cloud Shell, la version la plus récente est déjà installée.

Exemple de script

Lancement d’Azure Cloud Shell

Azure Cloud Shell est un interpréteur de commandes interactif et gratuit que vous pouvez utiliser pour exécuter les étapes de cet article. Il contient des outils Azure courants préinstallés et configurés pour être utilisés avec votre compte.

Pour ouvrir Cloud Shell, sélectionnez simplement Essayer en haut à droite d’un bloc de code. Vous pouvez aussi lancer Cloud Shell dans un onglet distinct du navigateur en accédant à https://shell.azure.com.

Quand Cloud Shell s’ouvre, vérifiez que Bash est sélectionné pour votre environnement. Les sessions ultérieures utiliseront Azure CLI dans un environnement Bash. Sélectionnez Copier pour copier les blocs de code, collez-les dans Cloud Shell, puis appuyez sur Entrée pour les exécuter.

Connexion à Azure

Cloud Shell est automatiquement authentifié sous le compte initial utilisé pour la connexion. Utilisez le script suivant pour vous connecter avec un autre abonnement, en remplaçant <Subscription ID> par votre ID d’abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

Pour plus d’informations, consultez Définir l’abonnement actif ou Se connecter de manière interactive

Exécuter le script

# Resource lock operations for a SQL database and container

# Subscription owner permissions required for this script

# Run this script after running
# "https://docs.microsoft.com/azure/cosmos-db/scripts/cli/sql/create#sample-script"

# Variable block
# Use values from prerequisite script or from your environment
# resourceGroup="your resource group name"
# account="your account name"
# database="your database name"
# container="your container name"

lockType="CanNotDelete" # CanNotDelete or ReadOnly
databaseParent="databaseAccounts/$account"
containerParent="databaseAccounts/$account/sqlDatabases/$database"
databaseLock="$database-Lock"
containerLock="$container-Lock"

# Create a delete lock on database
echo "Creating $lockType lock on $database"
az lock create --name $databaseLock --resource-group $resourceGroup --resource-type Microsoft.DocumentDB/sqlDatabases --lock-type $lockType --parent $databaseParent --resource $database

# Create a delete lock on container
echo "Creating $lockType lock on $container"
az lock create --name $containerLock --resource-group $resourceGroup --resource-type Microsoft.DocumentDB/containers --lock-type $lockType --parent $containerParent --resource $container

# List all locks on a Cosmos account
echo "Listing locks on $account"
az lock list --resource-group $resourceGroup --resource-name $account --namespace Microsoft.DocumentDB --resource-type databaseAccounts

# Delete lock on database
echo "Deleting $databaseLock on $database"
lockid=$(az lock show --name $databaseLock     --resource-group $resourceGroup     --resource-type Microsoft.DocumentDB/sqlDatabases     --resource $database     --parent $databaseParent     --output tsv --query id)
az lock delete --ids $lockid

# Delete lock on container
echo "Deleting $containerLock on $container"
lockid=$(az lock show --name $containerLock     --resource-group $resourceGroup     --resource-type Microsoft.DocumentDB/containers     --resource-name $container     --parent $containerParent     --output tsv --query id)
az lock delete --ids $lockid

Nettoyer les ressources

Utilisez la commande suivante pour supprimer le groupe de ressources et toutes les ressources associées à celui-ci à l’aide de la commande az group delete, sauf si vous avez toujours besoin de ces ressources. La création, ainsi que la suppression, de certaines de ces ressources peut prendre du temps.

az group delete --name $resourceGroup

Informations de référence sur l’exemple

Ce script utilise les commandes suivantes. Chaque commande du tableau renvoie à une documentation spécifique.

Commande Notes
az lock create Crée un verrou.
az lock list Liste les informations sur les verrous.
az lock show Affiche les propriétés d’un verrou.
az lock delete Supprime un verrou.

Étapes suivantes