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 BLOB Archiviazione e si imposta l'account su Sporadico. Si caricheranno quindi alcuni 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 il codice sorgente e i dati di esempio nella cartella nell'archiviazione
storageapp
di 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 BLOB Archiviazione e si recupererà la chiave di archiviazione dell'account.
Eseguire i comandi seguenti in Cloud Shell per creare un nuovo account BLOB Archiviazione impostato su 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. Prima di tutto, si impostano le variabili di ambiente richieste dall'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 Manage Archiviazione Tiers si connette ora all'archivio BLOB ed esegue query sui tre BLOB denominati BLOB1, BLOB2 e BLOB3. Cambia quindi il livello di archiviazione di tutti e tre i BLOB ed esegue di nuovo query sul livello di archiviazione di ogni BLOB per verificare la modifica. Il livello Archivio non verrà modificato 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 Manage Archiviazione Tiers\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; }