Otimizando custos no Azure Blob Storage

Otimizando custos no Azure Blob Storage

Sempre ouvimos falar sobre como funcionam os object storages e sua capacidade de armazenar os documentos em diferentes “temperaturas”, visando otimizar custos e evitar gastos desnecessários, mas são poucas documentações que mostram como configurar essa funcionalidade. É isso que faremos hoje!


O cronograma do tutorial de hoje será o seguinte:

  • Criar uma storage account;

  • Criar um container na storage account;

  • Realizar upload de um blob;

  • Criar a lifecycle management rule.

Como o propósito do artigo é ensinar a criação da lifecycle management rule, para as outras tarefas vamos utilizar comandos do Azure CLI.


Introdução

Quando estamos aprendendo sobre storage, é garantido que o material que estamos utilizando contém uma seção que fala sobre as vantagens de se utilizar um object storage, como os diferentes tipos de tiers/níveis/temperaturas funcionam e como os seus custos podem ser otimizados caso sua empresa tenha uma política de arquivamento de dados definida.

Os materiais também comentam que as plataformas em nuvem fornecem os meios para você realizar essas operações nos seus objetos. Esses meios costumam ser templates json, gerados através de formulários (ou digitados em um editor de texto) e que indicam onde as operações devem ocorrer e quais operações devem ser realizadas.

Com o objetivo de te ensinar a otimizar seus custos de armazenamento em cloud de uma maneira simples e automatizada, vamos aprender como deletar os objetos após certo tempo que foram criados, e o mesmo método pode ser utilizado para alterar o tier dos arquivos!


Pré-requisitos

  • Uma subscription ativa do Azure;

  • Privilégios para criar e operar os recursos na plataforma (caso esteja utilizando sua conta pessoal, não se preocupe com isso);

  • Acesso à linha de comando (podendo ser o Cloud Shell que já contém os pacotes do Azure CLI ou um terminal da sua máquina local com os pacotes instalados);

  • Acesso ao Portal do Azure para criação da Lifecycle Management Rule;

  • Um resource group (na próxima sessão, antes de realizar a criação da storage account e do container, fornecerei um comando para você criar o resource group).


Criando a Storage Account e um Container

Como mencionado no cronograma, o primeiro passo é a criação dos recursos que serão necessários para prosseguimento do tutorial.

(opcional) Criando um resource group

Caso tenha um resource group disponível desconsidere esse comando.

az group create --location <REGIÃO> --name <NOME-ÚNICO>

REGIÃO (obrigatório) — qual região o recurso deverá ser criado.

NOME-ÚNICO (obrigatório) — o nome do resource group deverá ser único dentro da sua subscription.

Criando a storage account

Para realizar a criação da storage account, você deverá executar o seguinte comando:

az storage account create --name --resource-group

NOME (obrigatório) — o nome da storage account deverá ser único globalmente.

RESOURCE-GROUP (obrigatório) — nome do resource group onde a storage account deverá ser criada. Se você criou o rg utilizando o script passado anteriormente, apenas copie o nome escolhido.

É importante comentar que o comando acima não específica qual tipo de storage account será criada. Quando o atributo que indica o tipo da conta é omitido, a conta criada será do tipo StorageV2 (General Purpose V2).

Criando o container

Para a criação do container, utilizaremos o seguinte comando:

az storage container create --name --account-name

NOME (obrigatório) — o nome do container deverá ser único dentro da storage account.

STORAGE ACCOUNT (obrigatório) — nome da storage account onde estaremos criando o container.


Realizando upload do blob

Agora que temos todos as estruturas necessárias criadas, o próximo passo será realizar o upload de um ou mais blobs para o nosso container.

Caso você esteja utilizando o Cloud Shell para executar seus scripts, o método mais simples para realizar o upload de um arquivo é através do próprio Portal do Azure. Navegue até a storage account, selecione o container, clique em “Upload” e selecione alguns arquivos existentes na sua máquina. Não se preocupe com o tipo dos arquivos, imagens, pdfs, vídeos, slides, todos são tipos válidos.

Agora, caso você esteja executando os scripts de maneira local no seu terminal, para realizar o upload de um arquivo, execute o comando a seguir:

az storage blob upload --account-name --container-name --name --file

STORAGE ACCOUNT (obrigatório) — nome da storage account que criamos.

CONTAINER (obrigatório) — nome do container.

NOME-ARQUIVO (obrigatório) — nome que será utilizado no momento de upload do arquivo. Independente do nome original do arquivo, esse valor será utilizado quando o upload for realizado.

ARQUIVO (obrigatório) — path até o arquivo desejado.


Criando a Lifecycle Management Rule

Agora que você tem todos os recursos que são necessários para a realização do tutorial, chegou a hora de criarmos a configuração que realizará a troca do tier dos objetos.

As Lifecycle Management Rules são puramente templates json que nos permitem criar regras que modificarão os blobs automaticamente. Podemos criar uma regra para alterar o tier do blob ou até para excluí-lo!

Para essa atividade, recomendo fortemente a utilização do Portal do Azure, pois as interações para criação da regra serão mais simples e intuitivas.

Criando a rule através do Portal do Azure

Ao acessar a dashboard da sua storage account, navegue pelo menu à esquerda até a opção “Gerenciamento de Ciclo de Vida”. Nesse menu, selecione a opção “Add rule” e vamos iniciar a criação da nossa política.

Para esse tutorial, vamos realizar a exclusão dos blobs do container após 1 dia criado. Esse cenário não é comum, mas para conseguirmos notar os resultados mais rápido, vamos implementar a política dessa forma.

Os cenários mais comuns que você encontrará, serão as mudanças de tier de acordo com a data de criação do blob com o objetivo de otimizar os custos e atender demandas regulatórias e também a deleção dos objetos quando não eles não forem mais úteis para o negócio.

A primeira parte da configuração deverá ficar dessa maneira. Vamos aplicar a regra para todos os blobs dentro da storage account e limitaremos a aplicação da regra apenas aos block blobs, que são objetos “simples”, que não sofrerão operações complexas.

A opção “Limitar blobs com filtros” permite que você crie queries para selecionar apenas alguns blobs na storage account. Ex: você quer aplicar a política para todos os arquivos em que o nome comece com a letra T.

O próximo passo é realizar a configuração da operação. No formulário, configuraremos que os blobs que foram criados a mais de 1 dia deverão ser excluídos.

Pronto, agora é só confirmar a aplicação da sua regra clicando em “Adicionar”.

Após a criação da política, pode ser que a primeira execução demore de 24 a 48 horas. Então por via das dúvidas, acesse sua storage account 2 dias após a configuração da política.


Resultado

2 dias se passaram e nós voltamos para visualizar os resultados da aplicação da nossa política.

Visualizando o resultado…

No portal do Azure

Acessando o Portal do Azure, navegue até a storage account criada nos passos anteriores, acesse o container e voilá!

Sua política foi executada com sucesso e todos os blobs em seu container foram excluídos!

No Cloud Shell

az storage blob list --account-name --container-name

STORAGE-ACCOUNT (obrigatório) — nome da storage account que criamos.

CONTAINER (obrigatório) — nome do container.

Caso a execução do comando retorne um array vazio, temos a certeza que todos os objetos da storage account foram excluídos, resultado a aplicação da política criada.


Chegando ao final do tutorial, você aprendeu como otimizar os custos da sua storage account de maneira simples e eficiente.

As lifecycle management rules oferecem grande benefício para seu ambiente cloud, além de serem simples de configurar.

Espero que tenha gostado do texto.

Até logo!