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
Instalação via NPM
# Instalação global
npm install -g azurite
# Verificar instalação
azurite --version
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
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
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;
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"
}
}
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 "..."
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 "..."
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 "..."
Ferramentas de Gerenciamento
Azure Storage Explorer
O Azure Storage Explorer pode se conectar ao Azurite para gerenciamento visual:
- Abra o Azure Storage Explorer
- Clique em "Connect to Azure Storage"
- Selecione "Local storage emulator"
- Configure as portas do Azurite
Azure CLI
# Configurar Azure CLI para usar Azurite
az storage account show-connection-string --name devstoreaccount1
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();
}
2. Processamento de Filas
[FunctionName("ProcessQueue")]
public static void ProcessMessage(
[QueueTrigger("minha-fila")] string message,
ILogger log)
{
log.LogInformation($"Processando: {message}");
}
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}");
}
Monitoramento e Debugging
Logs do Azurite
# Executar com logs detalhados
azurite --debug
# Logs em arquivo
azurite --debug --log ./azurite.log
Verificação de Status
# Verificar se o Azurite está rodando
curl http://localhost:10000/devstoreaccount1
# Health check
curl -I http://localhost:10000/devstoreaccount1
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)