Exercice : Gérer le stockage à plusieurs niveaux avec des applications ASP.NET Core
Vous allez maintenant tester quelques exemples de code .NET pour récupérer et modifier les niveaux de quelques exemples d’objets blob du service Stockage Azure. Vous allez créer un compte BlobStorage et définir le compte sur Sporadique. Puis, vous allez charger des données et utiliser l’application pour modifier les niveaux de stockage.
Télécharger le code et les exemples de données
Lors de cette première étape, vous allez télécharger le code source et les exemples de données à partir de votre stockage Cloud Shell.
Exécutez les commandes suivantes dans Cloud Shell pour télécharger le code source et les exemples de données dans le dossier
storageapp
de votre stockage Cloud Shell :git clone https://github.com/MicrosoftDocs/mslearn-optimize-blob-storage-costs storageapp cd storageapp
Utiliser CLI pour créer un compte de stockage d’objets blob
Vous allez maintenant créer un compte BlobStorage et récupérer la clé de compte de stockage.
Exécutez les commandes suivantes dans Cloud Shell pour créer un compte de stockage BlobStorage défini sur Sporadique. Remplacez
<random string>
dans le code suivant par une chaîne de lettres ou de chiffres :export RESOURCE_GROUP=<rgn>[sandbox resource group name]</rgn> export AZURE_STORAGE_ACCOUNT=<random string>storageaccount az storage account create \ --resource-group $RESOURCE_GROUP \ --name $AZURE_STORAGE_ACCOUNT \ --kind BlobStorage \ --access-tier Cool
Exécutez la commande suivante dans Cloud Shell pour récupérer la clé de stockage du compte et stockez-la dans une variable :
export AZURE_STORAGE_KEY=`az storage account keys list -g $RESOURCE_GROUP -n $AZURE_STORAGE_ACCOUNT --query [0].value --output tsv`
Créer un conteneur et charger des données
Lors de cette étape, vous allez créer un conteneur d’objets blob et trois objets blob, chacun contenant des exemples de données.
Exécutez la commande suivante dans Cloud Shell pour créer un conteneur :
az storage container create \ --name blobcontainer \ --account-name $AZURE_STORAGE_ACCOUNT \ --account-key $AZURE_STORAGE_KEY
Exécutez les commandes suivantes dans Cloud Shell pour créer des objets blob avec des exemples de données :
cd ManageStorageTiers az storage blob upload --file testdata.txt --container-name blobcontainer --name blob1 az storage blob upload --file testdata.txt --container-name blobcontainer --name blob2 az storage blob upload --file testdata.txt --container-name blobcontainer --name blob3
Définir le niveau de chaque objet blob
Lors de cette étape, vous allez définir le niveau d’accès de chaque objet blob.
Exécutez la commande suivante dans Cloud Shell pour définir blob1 sur le niveau Archive :
az storage blob set-tier \ --container-name blobcontainer \ --name blob1 \ --tier Archive
Exécutez la commande suivante dans Cloud Shell pour définir blob2 sur le niveau Froid :
az storage blob set-tier \ --container-name blobcontainer \ --name blob2 \ --tier Cool
Exécutez la commande suivante dans Cloud Shell pour définir blob3 sur le niveau Chaud :
az storage blob set-tier \ --container-name blobcontainer \ --name blob3 \ --tier Hot
Gérer les niveaux de stockage dans le code
Vous êtes maintenant prêt à déployer et tester du code. Tout d’abord, vous allez définir les variables d’environnement dont l’exemple d’application a besoin. Vous allez ensuite générer et exécuter l’exemple d’application (ignorez les avertissements concernant le package Microsoft.Azure.KeyVault.Core).
Exécutez les commandes suivantes dans Cloud Shell pour stocker les variables d’environnement que l’application utilise :
export STORAGE_CONNECTION_STRING=`az storage account show-connection-string -g $RESOURCE_GROUP -n $AZURE_STORAGE_ACCOUNT --output tsv` export CONTAINER_NAME=blobcontainer
Exécutez la commande suivante dans Cloud Shell pour générer et exécuter l’application ManageStorageTiers :
cd ManageStorageTiers dotnet build dotnet run
L’application ManageStorageTiers se connecte maintenant à votre stockage d’objets blob et interroge les trois objets blob nommés blob1, blob2 et blob3. Elle modifie ensuite le niveau de stockage de ces trois objets blob et interroge à nouveau le niveau de stockage de chaque objet blob pour vérifier les modifications apportées. Le niveau Archive n’aura pas été modifié en raison de la latence de réhydratation.
Examiner le code d’application
Lors de cette dernière étape, vous allez examiner le code utilisé par l’application ManageStorageTiers pour gérer et modifier les niveaux d’accès.
Dans Cloud Shell, entrez
code .
, puis utilisez l’éditeur pour ouvrir ManageStorageTiers\Program.cs.Ce code affiche les niveaux de stockage de tous les objets blob d’un conteneur :
private static async Task DisplayBlobTiers(BlobContainerClient blobContainerClient) { AsyncPageable<BlobItem> blobItems = blobContainerClient.GetBlobsAsync(); await foreach (var blobItem in blobItems) { Console.WriteLine($" Blob name {blobItem.Name}: Tier {blobItem.Properties.AccessTier}"); } }
Les méthodes suivantes fonctionnent ensemble pour mettre à jour le niveau de stockage d’un ensemble d’objets blob présents dans un conteneur :
private static async Task UpdateBlobTiers(BlobContainerClient blobContainerClient) { AsyncPageable<BlobItem> blobItems = blobContainerClient.GetBlobsAsync(); await foreach (var blobItem in blobItems) { string blobName = blobItem.Name; AccessTier? currentAccessTier = blobItem.Properties.AccessTier; AccessTier newAccessTier = GetNewAccessTier(currentAccessTier); Console.WriteLine($" Blob name: {blobItem.Name} Current tier: {currentAccessTier} New tier: {newAccessTier}"); BlobClient blobClient = blobContainerClient.GetBlobClient(blobItem.Name); blobClient.SetAccessTier(newAccessTier); } } private static AccessTier GetNewAccessTier(AccessTier? accessTier) { if (accessTier == AccessTier.Hot) return AccessTier.Cool; else if (accessTier == AccessTier.Cool) return AccessTier.Archive; else return AccessTier.Hot; }