DEV Community

Thiago da Silva Adriano
Thiago da Silva Adriano

Posted on

Conheça o Azurite

O que é o Azurite?

O Azurite é um emulador de código aberto desenvolvido pela Microsoft que replica os serviços do Azure Storage localmente em sua máquina. Ele fornece um ambiente de teste gratuito e consistente para aplicações que usam os serviços de armazenamento do Azure, incluindo Blob Storage, Queue Storage e Table Storage.

Por que usar o Azurite?

Vantagens do Desenvolvimento Local

  • Custo Zero: Não há cobrança por uso durante o desenvolvimento
  • Desenvolvimento Offline: Trabalhe sem conexão com a internet
  • Velocidade: Latência mínima por estar rodando localmente
  • Isolamento: Ambiente de teste separado da produção
  • Facilidade de Configuração: Setup simples e rápido

Casos de Uso

  • Desenvolvimento e teste de Azure Functions
  • Aplicações que usam Azure Blob Storage
  • Sistemas com filas do Azure Queue Storage
  • Aplicações que dependem do Azure Table Storage
  • Integração contínua e testes automatizados

Instalação e Configuração

Pré-requisitos

# Node.js (versão 8.0 ou superior)
node --version

# NPM ou Yarn
npm --version
Enter fullscreen mode Exit fullscreen mode

Instalação via NPM

# Instalação global
npm install -g azurite

# Verificar instalação
azurite --version
Enter fullscreen mode Exit fullscreen mode

Instalação via Docker

# Executar container Azurite
docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 mcr.microsoft.com/azure-storage/azurite

# Com volume persistente
docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 -v ~/azurite:/data mcr.microsoft.com/azure-storage/azurite
Enter fullscreen mode Exit fullscreen mode

Comandos Básicos

Iniciar o Azurite

# Iniciar todos os serviços
azurite

# Iniciar apenas Blob Storage
azurite --blobHost 127.0.0.1 --blobPort 10000

# Iniciar com diretório personalizado
azurite --location ~/meu-azurite

# Modo silencioso
azurite --silent
Enter fullscreen mode Exit fullscreen mode

Configuração de Portas

Serviço Porta Padrão Descrição
Blob Storage 10000 Armazenamento de arquivos
Queue Storage 10001 Sistema de filas
Table Storage 10002 Armazenamento de tabelas

Integração com Azure Functions

String de Conexão

# String de conexão padrão do Azurite
DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;
Enter fullscreen mode Exit fullscreen mode

Configuração no local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
  }
}
Enter fullscreen mode Exit fullscreen mode

Funcionalidades Principais

1. Blob Storage

O Azurite emula completamente o Azure Blob Storage:

# Criar container
az storage container create --name meu-container --connection-string "..."

# Upload de arquivo
az storage blob upload --file arquivo.txt --container-name meu-container --name arquivo.txt --connection-string "..."

# Listar blobs
az storage blob list --container-name meu-container --connection-string "..."
Enter fullscreen mode Exit fullscreen mode

2. Queue Storage

Suporte completo para filas do Azure:

# Criar fila
az storage queue create --name minha-fila --connection-string "..."

# Enviar mensagem
az storage message put --queue-name minha-fila --content "Olá Azurite!" --connection-string "..."

# Receber mensagem
az storage message get --queue-name minha-fila --connection-string "..."
Enter fullscreen mode Exit fullscreen mode

3. Table Storage

Emulação do Azure Table Storage:

# Criar tabela
az storage table create --name MinhaTabela --connection-string "..."

# Inserir entidade
az storage entity insert --table-name MinhaTabela --entity PartitionKey=teste RowKey=1 Nome=João --connection-string "..."
Enter fullscreen mode Exit fullscreen mode

Ferramentas de Gerenciamento

Azure Storage Explorer

O Azure Storage Explorer pode se conectar ao Azurite para gerenciamento visual:

  1. Abra o Azure Storage Explorer
  2. Clique em "Connect to Azure Storage"
  3. Selecione "Local storage emulator"
  4. Configure as portas do Azurite

Azure CLI

# Configurar Azure CLI para usar Azurite
az storage account show-connection-string --name devstoreaccount1
Enter fullscreen mode Exit fullscreen mode

Exemplos Práticos

1. Sistema de Upload de Arquivos

// Exemplo em C# para Azure Functions
[FunctionName("UploadFile")]
public static async Task<IActionResult> Upload(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
    [Blob("uploads/{rand-guid}.txt", FileAccess.Write)] Stream blob)
{
    await req.Body.CopyToAsync(blob);
    return new OkResult();
}
Enter fullscreen mode Exit fullscreen mode

2. Processamento de Filas

[FunctionName("ProcessQueue")]
public static void ProcessMessage(
    [QueueTrigger("minha-fila")] string message,
    ILogger log)
{
    log.LogInformation($"Processando: {message}");
}
Enter fullscreen mode Exit fullscreen mode

3. Monitoramento de Blob Storage

[FunctionName("BlobTrigger")]
public static void ProcessBlob(
    [BlobTrigger("uploads/{name}")] Stream blob,
    string name,
    ILogger log)
{
    log.LogInformation($"Novo arquivo: {name}, Tamanho: {blob.Length}");
}
Enter fullscreen mode Exit fullscreen mode

Monitoramento e Debugging

Logs do Azurite

# Executar com logs detalhados
azurite --debug

# Logs em arquivo
azurite --debug --log ./azurite.log
Enter fullscreen mode Exit fullscreen mode

Verificação de Status

# Verificar se o Azurite está rodando
curl http://localhost:10000/devstoreaccount1

# Health check
curl -I http://localhost:10000/devstoreaccount1
Enter fullscreen mode Exit fullscreen mode

Em resumo o Azurite é uma ferramenta essencial para qualquer desenvolvedor que trabalha com Azure Storage e Azure Functions. Ele permite desenvolvimento rápido, econômico e eficiente, proporcionando um ambiente local que espelha fielmente os serviços de produção do Azure.

Com sua facilidade de configuração e ampla compatibilidade, o Azurite remove as barreiras do desenvolvimento na nuvem, permitindo que equipes trabalhem de forma produtiva mesmo sem conexão constante com a internet ou preocupações com custos de desenvolvimento.

Top comments (0)