Esercizio - Gestire l'archiviazione a livelli tramite app ASP.NET Core
In questa unità si testerà del codice .NET di esempio per recuperare e modificare il livello di archiviazione per alcuni BLOB di esempio di Archiviazione di Azure. Si creerà un nuovo account BlobStorage e si imposterà l'account sul livello di accesso sporadico. Successivamente, si caricheranno dei dati e si userà l'app per modificare i livelli di archiviazione.
Scaricare il codice e i dati di esempio
In questo primo passaggio si scaricheranno il codice sorgente e i dati di esempio nello spazio di archiviazione Cloud Shell.
Eseguire i comandi seguenti in Cloud Shell per scaricare i dati di esempio e il codice sorgente nella cartella
storageapp
dello spazio di archiviazione Cloud Shell:git clone https://github.com/MicrosoftDocs/mslearn-optimize-blob-storage-costs storageapp cd storageapp
Usare l'interfaccia della riga di comando per creare un nuovo account di archiviazione BLOB
Si creerà ora un nuovo account BlobStorage e si recupererà la chiave di archiviazione dell'account.
Eseguire i comandi seguenti in Cloud Shell per creare un nuovo account BlobStorage impostato sul livello di accesso sporadico. Sostituire
<random string>
nel codice seguente con una stringa di lettere o numeri: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
Eseguire il comando seguente in Cloud Shell per recuperare la chiave di archiviazione per l'account e archiviarla in una variabile:
export AZURE_STORAGE_KEY=`az storage account keys list -g $RESOURCE_GROUP -n $AZURE_STORAGE_ACCOUNT --query [0].value --output tsv`
Creare un contenitore e caricare i dati
In questo passaggio si creeranno un contenitore BLOB e tre BLOB, ognuno dei quali contenente dati di esempio.
Eseguire il comando seguente in Cloud Shell per creare un nuovo contenitore:
az storage container create \ --name blobcontainer \ --account-name $AZURE_STORAGE_ACCOUNT \ --account-key $AZURE_STORAGE_KEY
Eseguire i comandi seguenti in Cloud Shell per caricare i dati di esempio nei BLOB:
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
Impostare il livello per ogni BLOB
In questo passaggio si imposterà il livello di accesso per ogni BLOB.
Eseguire i comandi seguenti in Cloud Shell per impostare blob1 sul livello di accesso archivio:
az storage blob set-tier \ --container-name blobcontainer \ --name blob1 \ --tier Archive
Eseguire i comandi seguenti in Cloud Shell per impostare blob2 sul livello di accesso sporadico:
az storage blob set-tier \ --container-name blobcontainer \ --name blob2 \ --tier Cool
Eseguire i comandi seguenti in Cloud Shell per impostare blob3 sul livello di accesso frequente:
az storage blob set-tier \ --container-name blobcontainer \ --name blob3 \ --tier Hot
Gestire i livelli di archiviazione nel codice
A questo punto si è pronti per distribuire e testare il codice. Innanzitutto si imposteranno le variabili di ambiente necessarie per l'app di esempio. Successivamente, si creerà ed eseguirà l'app di esempio. Ignorare gli avvisi sul pacchetto Microsoft.Azure.KeyVault.Core.
Eseguire i comandi seguenti in Cloud Shell per archiviare le variabili di ambiente usate dall'app:
export STORAGE_CONNECTION_STRING=`az storage account show-connection-string -g $RESOURCE_GROUP -n $AZURE_STORAGE_ACCOUNT --output tsv` export CONTAINER_NAME=blobcontainer
Eseguire il comando seguente in Cloud Shell per compilare ed eseguire l'app ManageStorageTiers:
cd ManageStorageTiers dotnet build dotnet run
L'app ManageStorageTiers si connette al servizio di archiviazione BLOB ed esegue query sui tre BLOB denominati blob1, blob2 e blob3. Modifica quindi il livello di archiviazione di tutti e tre i BLOB ed ripete le query in ogni livello di archiviazione del BLOB per verificare la modifica. Il livello di accesso archivio sarà rimasto invariato, a causa della latenza di riattivazione.
Esaminare il codice dell'app
In quest'ultimo passaggio si esaminerà il codice usato dall'app ManageStorageTiers per gestire e modificare i livelli di accesso.
In Cloud Shell, immettere
code .
, quindi usare l'editor per aprire ManageStorageTiers\Program.cs.Questo codice visualizza i livelli di archiviazione per tutti i BLOB in un contenitore:
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}"); } }
I metodi seguenti interagiscono per aggiornare il livello di archiviazione per un set di BLOB in un contenitore:
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; }