Exercício – gerir o armazenamento em camadas com aplicações ASP.NET Core
Agora, irá testar alguns códigos .NET de exemplo para obter e modificar níveis de camadas para alguns exemplos de blobs de Armazenamento do Azure. Você criará uma nova conta BlobStorage e definirá a conta como Cool. Em seguida, você carregará alguns dados e usará o aplicativo para modificar as camadas de armazenamento.
Transferir o código e os dados de exemplo
Neste primeiro passo, irá transferir o código fonte e os dados de exemplo para o seu armazenamento do Cloud Shell.
Execute os seguintes comandos no Cloud Shell para baixar o código-fonte e os dados de exemplo para a
storageapp
pasta no armazenamento do Cloud Shell:git clone https://github.com/MicrosoftDocs/mslearn-optimize-blob-storage-costs storageapp cd storageapp
Utilizar a CLI para criar uma nova conta de armazenamento de blobs
Agora você criará uma nova conta BlobStorage e recuperará a chave de armazenamento da conta.
Execute os seguintes comandos no Cloud Shell para criar uma nova conta BlobStorage definida como Cool. Substitua
<random string>
no código a seguir por uma sequência de letras ou números: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
Execute o seguinte comando no Cloud Shell para recuperar a chave de armazenamento da conta e armazená-la em uma variável:
export AZURE_STORAGE_KEY=`az storage account keys list -g $RESOURCE_GROUP -n $AZURE_STORAGE_ACCOUNT --query [0].value --output tsv`
Criar o contentor e carregar dados
Neste passo, irá criar um contentor de blobs e três blobs, cada um contendo alguns dados de exemplo.
Execute o seguinte comando no Cloud Shell para criar um novo contentor:
az storage container create \ --name blobcontainer \ --account-name $AZURE_STORAGE_ACCOUNT \ --account-key $AZURE_STORAGE_KEY
Execute os seguintes comandos no Cloud Shell para blobs com dados de exemplo:
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
Definir a camada de cada blob
Neste passo, irá definir a camada de acesso de cada blob.
Execute o seguinte comando no Cloud Shell para definir o blob1 como Archive (Arquivo):
az storage blob set-tier \ --container-name blobcontainer \ --name blob1 \ --tier Archive
Execute o seguinte comando no Cloud Shell para definir o blob2 como Cool (Acesso Esporádico):
az storage blob set-tier \ --container-name blobcontainer \ --name blob2 \ --tier Cool
Execute o seguinte comando no Cloud Shell para definir o blob3 como Hot (Acesso Frequente):
az storage blob set-tier \ --container-name blobcontainer \ --name blob3 \ --tier Hot
Gerir camadas de armazenamento no código
Agora, está pronto para implementar e testar alguns códigos. Primeiro, você definirá as variáveis de ambiente que o aplicativo de exemplo requer. Em seguida, irá criar e executar a aplicação de exemplo (ignore os avisos sobre o pacote Microsoft.Azure.KeyVault.Core).
Execute os seguintes comandos no Cloud Shell para armazenar as variáveis de ambiente usadas pelo aplicativo:
export STORAGE_CONNECTION_STRING=`az storage account show-connection-string -g $RESOURCE_GROUP -n $AZURE_STORAGE_ACCOUNT --output tsv` export CONTAINER_NAME=blobcontainer
Execute o seguinte comando no Cloud Shell para compilar e executar a aplicação ManageStorageTiers:
cd ManageStorageTiers dotnet build dotnet run
O aplicativo ManageStorageTiers agora se conecta ao seu armazenamento de blob e consulta os três blobs chamados blob1, blob2 e blob3. Em seguida, ele altera a camada de armazenamento de todos os três blobs e consulta a camada de armazenamento de cada blob novamente para verificar a alteração. A camada Arquivo não terá sido alterada devido à latência de reidratação.
Rever o código da aplicação
Neste passo final, irá analisar o código utilizado pela aplicação ManageStorageTiers para gerir e alterar as camadas de acesso.
No Cloud Shell, digite
code .
, e use o editor para abrir ManageStorageTiers\Program.cs.Esse código exibe as camadas de armazenamento para todos os blobs em um contêiner:
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}"); } }
Os seguintes métodos trabalham juntos para atualizar a camada de armazenamento para um conjunto de blobs em um contêiner:
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; }