Effectuer des opérations sur Stockage Table Azure avec Azure PowerShell

Conseil

Dans cet article, le contenu s’applique au stockage Table Azure. Toutefois, il existe désormais une offre premium de stockage de tables, Azure Cosmos DB for Table, qui propose des tables optimisées pour le débit, la distribution globale et les index secondaires automatiques. Pour en savoir plus et essayer l’expérience premium, consultez Azure Cosmos DB for Table. Le langage de programmation de cet article n’est pas encore pris en charge dans l’offre premium mais sera ajouté à l’avenir.

Le stockage Table Azure est une banque de données NoSQL que vous pouvez utiliser pour stocker et interroger de grands ensembles de données non relationnelles et structurées. Les principaux composants du service sont les tables, les entités et les propriétés. une table est une collection d’entités. Une entité est un ensemble de propriétés. Chaque entité peut avoir jusqu’à 252 propriétés, qui sont toutes des paires nom-valeur. Cet article suppose que vous êtes déjà familiarisé avec les concepts du service Stockage Table Azure. Pour plus d’informations, consultez Présentation du modèle de données du service de Table et Prise en main d’Azure Table Storage à l’aide de .NET.

Cet article sur les procédures décrit les opérations courantes liées à Stockage Table Azure. Vous allez apprendre à effectuer les actions suivantes :

  • Créer une table
  • Récupération d’une table
  • Ajouter des entités de table
  • Interrogation d’une table
  • Suppression d’entités de table
  • Suppression d’une table

Cet article sur les procédures vous montre comment créer un compte de stockage dans un nouveau groupe de ressources afin que vous puissiez le supprimer facilement quand vous avez terminé. Vous pouvez également utiliser un compte de stockage existant.

Les exemples nécessitent les modules Az PowerShell Az.Storage (1.1.0 or greater) et Az.Resources (1.2.0 or greater). Dans une fenêtre PowerShell, exécutez Get-Module -ListAvailable Az* pour trouver la version. Si aucune information n’est affichée ou que vous devez effectuer une mise à niveau, consultez Installer le module Azure PowerShell.

Important

Pour utiliser cette fonctionnalité Azure à partir de PowerShell, vous devez installer le module Az. La version actuelle de AzTable n’est pas compatible avec l’ancien module AzureRM. Si nécessaire, suivez les dernières instructions d’installation du module Az.

Pour des raisons de compatibilité de nom de module, ce module est également publié sous son nom précédent (AzureRmStorageTables) dans PowerShell Gallery. Ce document fait uniquement référence au nouveau nom.

Après avoir installé ou mis à jour Azure PowerShell, vous devez installer le module AzTable, qui contient les commandes permettant de gérer les entités. Pour installer ce module, exécutez PowerShell en tant qu’administrateur et utilisez la commande Install-Module.

Install-Module AzTable

Autorisation d’opérations sur des données de table

Le module PowerShell AzTable prend en charge l’autorisation avec la clé d’accès au compte via l’autorisation de clé partagée. Les exemples présentés dans cet article montrent comment autoriser des opérations sur des données de table via une clé partagée.

Le stockage de table Azure prend en charge l’autorisation avec Microsoft Entra ID. Toutefois, le module PowerShell AzTable ne prend pas en charge en mode natif l’autorisation avec Microsoft Entra ID. L’utilisation de Microsoft Entra ID avec le module AzTable nécessite d’appeler des méthodes dans la bibliothèque de client .NET à partir de PowerShell.

Connexion à Azure

Pour commencer, connectez-vous à votre abonnement Azure avec la commande Add-AzAccount et suivez les instructions à l’écran.

Add-AzAccount

Récupérer la liste des régions

Si vous ne savez pas quelle localisation utiliser, affichez la liste des localisations disponibles. Dans la liste, trouvez celle que vous souhaitez utiliser. Ces exemples utilisent eastus. Stockez cette valeur dans la variable location pour une utilisation ultérieure.

Get-AzLocation | select Location
$location = "eastus"

Créer un groupe de ressources

Créez un groupe de ressources avec la commande New-AzResourceGroup.

Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure sont déployées et gérées. Stockez le nom du groupe de ressources dans une variable pour une utilisation ultérieure. Dans cet exemple, un groupe de ressources nommé pshtablesrg est créé dans la région eastus.

$resourceGroup = "pshtablesrg"
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location

Créer un compte de stockage

Créez un compte de stockage universel standard avec un stockage localement redondant (LRS) à l’aide de New-AzStorageAccount. Veillez à spécifier un nom de compte de stockage unique. Ensuite, obtenez le contexte qui représente le compte de stockage. Si un compte de stockage est utilisé, vous pouvez référencer le contexte pour vous éviter d’avoir à entrer maintes fois vos informations d’identification.

$storageAccountName = "pshtablestorage"
$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup `
  -Name $storageAccountName `
  -Location $location `
  -SkuName Standard_LRS `
  -Kind Storage

$ctx = $storageAccount.Context

Créer une table

Pour créer une table, utilisez l’applet de commande New-AzStorageTable. Dans cet exemple, la table est appelée pshtesttable.

$tableName = "pshtesttable"
New-AzStorageTable -Name $tableName -Context $ctx

Récupérer une liste de tables dans le compte de stockage

Récupérez la liste de tables dans le compte de stockage à l’aide de Get-AzStorageTable.

Get-AzStorageTable -Context $ctx | select Name

Récupérer une référence à une table spécifique

Pour effectuer des opérations sur une table, vous avez besoin d’une référence à cette table. Obtenez une référence à l’aide de Get-AzStorageTable.

$storageTable = Get-AzStorageTable -Name $tableName -Context $ctx

Référencer la propriété CloudTable d’une table spécifique

Important

L’utilisation de la propriété CloudTable est obligatoire lors de l’utilisation de données de table via le module PowerShell AzTable. Appelez la commande Get-AzStorageTable pour obtenir la référence à cet objet.

Pour effectuer des opérations sur une table à l’aide d’AzTable, retournez une référence à la propriété CloudTable d’une table spécifique. La propriété CloudTable expose les méthodes .NET disponibles pour la gestion des données de table à partir de PowerShell.

$cloudTable = $storageTable.CloudTable

Gestion des entités de table

Maintenant que vous avez une table, intéressons-nous à la manière de gérer les entités, ou lignes, dans cette table.

Les entités peuvent comprendre jusqu’à 255 propriétés, notamment trois propriétés système : PartitionKey, RowKey et Timestamp. Vous êtes chargé d’insérer et de mettre à jour les valeurs de PartitionKey et RowKey. Le serveur gère la valeur de Timestamp, qui ne peut pas être modifiée. Les propriétés PartitionKey et RowKey identifient de manière unique chaque entité d’une table.

  • PartitionKey: détermine la partition dans laquelle l’entité est stockée
  • RowKey: identifie de façon unique l’entité dans la partition

Vous pouvez définir au maximum 252 propriétés personnalisées par entité.

Ajouter des entités de table

Ajouter des entités à une table à l’aide de Add-AzTableRow. Ces exemples utilisent des clés de partition avec des valeurs partition1 et partition2, ainsi que des clés de ligne équivalant à des abréviations d’état. Les propriétés de chaque entité sont username et userid.

$partitionKey1 = "partition1"
$partitionKey2 = "partition2"

# add four rows 
Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey1 `
    -rowKey ("CA") -property @{"username"="Chris";"userid"=1}

Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey2 `
    -rowKey ("NM") -property @{"username"="Jessie";"userid"=2}

Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey1 `
    -rowKey ("WA") -property @{"username"="Christine";"userid"=3}

Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey2 `
    -rowKey ("TX") -property @{"username"="Steven";"userid"=4}

Interroger les entités de table

Vous pouvez interroger les entités dans une table avec la commande Get-AzTableRow.

Notes

Les cmdlets Get-AzureStorageTableRowAll, Get-AzureStorageTableRowByPartitionKey, Get-AzureStorageTableRowByColumnName, et Get-AzureStorageTableRowByCustomFilter sont déconseillées et seront supprimées dans une mise à jour ultérieure.

Récupérer toutes les entités

Get-AzTableRow -table $cloudTable | ft

Cette commande génère des résultats similaires à la table suivante :

userid username partition rowkey
1 Chris partition1 CA
3 Christine partition1 WA
2 Jessie partition2 NM
4 Steven partition2 TX

Récupérer le nombre d’entités dans la table

$totalEntities=(Get-AzTableRow -table $cloudTable | measure).Count
Echo $totalEntities

Cette commande génère la quantité numérique d’entités similaires à ce qui suit :

4

Récupérer des entités pour une clé de partition spécifique

Get-AzTableRow -table $cloudTable -partitionKey $partitionKey1 | ft

Les résultats ressemblent à la table suivante :

userid username partition rowkey
1 Chris partition1 CA
3 Christine partition1 WA

Récupérer les entités d’une valeur spécifique dans une colonne spécifique

Get-AzTableRow -table $cloudTable `
    -columnName "username" `
    -value "Chris" `
    -operator Equal

Cette requête récupère un seul enregistrement.

field value
userid 1
username Chris
PartitionKey partition1
RowKey CA

Récupérer des entités à l’aide d’un filtre personnalisé

Get-AzTableRow `
    -table $cloudTable `
    -customFilter "(userid eq 1)"

Cette requête récupère un seul enregistrement.

field value
userid 1
username Chris
PartitionKey partition1
RowKey CA

Mise à jour des entités

Trois étapes sont nécessaires pour mettre à jour des entités. La première consiste à récupérer l’entité à modifier. La deuxième à apporter la modification. La troisième à valider la modification à l’aide de la commande Update-AzTableRow.

Mettez à jour l’entité dont le nom d’utilisateur est « Jessie » pour que le nom d’utilisateur devienne « Jessie2 ». Cet exemple montre également une autre façon de créer un filtre personnalisé à l’aide de types .NET.

# Create a filter and get the entity to be updated.
[string]$filter = `
    [Microsoft.Azure.Cosmos.Table.TableQuery]::GenerateFilterCondition("username",`
    [Microsoft.Azure.Cosmos.Table.QueryComparisons]::Equal,"Jessie")
$user = Get-AzTableRow `
    -table $cloudTable `
    -customFilter $filter

# Change the entity.
$user.username = "Jessie2"

# To commit the change, pipe the updated record into the update cmdlet.
$user | Update-AzTableRow -table $cloudTable

# To see the new record, query the table.
Get-AzTableRow -table $cloudTable `
    -customFilter "(username eq 'Jessie2')"

Les résultats montrent l’enregistrement Jessie2.

field value
userid 2
username Jessie2
PartitionKey partition2
RowKey NM

Suppression d’entités de table

Vous pouvez supprimer une entité ou toutes les entités dans une table.

Suppression d’une seule entité

Pour supprimer une seule entité, obtenez une référence à cette entité et redirigez-la vers Remove-AzTableRow.

# Set filter.
[string]$filter = `
  [Microsoft.Azure.Cosmos.Table.TableQuery]::GenerateFilterCondition("username",`
  [Microsoft.Azure.Cosmos.Table.QueryComparisons]::Equal,"Jessie2")

# Retrieve entity to be deleted, then pipe it into the remove cmdlet.
$userToDelete = Get-AzTableRow `
    -table $cloudTable `
    -customFilter $filter
$userToDelete | Remove-AzTableRow -table $cloudTable

# Retrieve entities from table and see that Jessie2 has been deleted.
Get-AzTableRow -table $cloudTable | ft

Supprimer toutes les entités d’une table

Pour supprimer toutes les entités d’une table, récupérez-les, puis redirigez les résultats vers l’applet de commande remove.

# Get all rows and pipe the result into the remove cmdlet.
Get-AzTableRow `
    -table $cloudTable | Remove-AzTableRow -table $cloudTable 

# List entities in the table (there won't be any).
Get-AzTableRow -table $cloudTable | ft

Suppression d’une table

Pour supprimer une table, utilisez Remove-AzStorageTable. Cette applet de commande supprime la table, données comprises.

Remove-AzStorageTable -Name $tableName -Context $ctx

# Retrieve the list of tables to verify the table has been removed.
Get-AzStorageTable -Context $Ctx | select Name

Nettoyer les ressources

Si vous avez créé un groupe de ressources et un compte de stockage au début de ce guide pratique, vous pouvez supprimer toutes les ressources que vous avez créées dans cet exercice en supprimant le groupe de ressources. Cette commande supprime toutes les ressources contenues dans le groupe de ressources, ainsi que le groupe lui-même.

Remove-AzResourceGroup -Name $resourceGroup

Étapes suivantes

Cet article sur les procédures vous a présenté des opérations Stockage Table Azure courantes réalisables avec PowerShell. Vous avez notamment appris à effectuer les tâches suivantes :

  • Créer une table
  • Récupération d’une table
  • Ajouter des entités de table
  • Interrogation d’une table
  • Suppression d’entités de table
  • Suppression d’une table

Pour plus d’informations, consultez les articles suivants :