Compartilhar via


Usar o emulador Azurite para o desenvolvimento local do Armazenamento do Microsoft Azure

O emulador de software livre do Azurite fornece um ambiente local gratuito para testar seus aplicativos baseados em nuvem. Quando estiver satisfeito com o funcionamento de seu aplicativo no local, alterne para usar uma conta de Armazenamento do Microsoft Azure na nuvem.

O Azurite é um emulador de armazenamento leve escrito em JavaScript e executado em Node.js que simula o serviço de Armazenamento do Azure para desenvolvimento local. Ele dá suporte aos serviços de Armazenamento de Blobs, Filas e Tabelas e fornece suporte multiplataforma no Windows, Linux e macOS. Para obter ajuda com a instalação e a execução do Azurite, consulte Instalar e executar o emulador do Azurite.

O Azurite também permite que os desenvolvedores executem testes em um ambiente de armazenamento local, simulando o comportamento do Azure, que é crucial para a integração e o teste de ponta a ponta. Para ler mais sobre como usar o Azurite para testes automatizados, consulte Usar o Azurite para executar testes automatizados.

O Azurite substitui o Emulador de Armazenamento do Azure e continua sendo atualizado para dar suporte às versões mais recentes das APIs do Armazenamento do Azure.

Diferenças entre o Azurite e o Armazenamento do Microsoft Azure

Há diferenças funcionais entre uma instância local do Azurite e uma conta do Armazenamento do Azure na nuvem.

Importante

O Azurite dá suporte apenas aos serviços de Armazenamento de Blobs, Filas e Tabelas. Ele não dá suporte aos Arquivos do Azure nem ao Azure Data Lake Storage Gen2, mas fornece suporte multiplataforma no Windows, linux e macOS.

Ponto de extremidade e conexão URL

Os pontos de extremidade de serviço para a Azurite são diferentes dos pontos de extremidade de uma conta de Armazenamento do Azure. O computador local não resolve nomes de domínio, exigindo que os pontos de extremidade do Azurite sejam endereços locais.

Quando você endereça um recurso em uma conta de Armazenamento do Azure, o nome da conta faz parte do nome do host URI. O recurso que está sendo endereçado faz parte do caminho do URI:

<http|https>://<account-name>.<service-name>.core.windows.net/<resource-path>

Por exemplo, o seguinte URI é um endereço válido para um blob em uma conta de Armazenamento do Azure:

https://myaccount.blob.core.windows.net/mycontainer/myblob.txt

URL no estilo IP

Como o computador local não resolve os nomes de domínio, o nome da conta faz parte do caminho do URI e não do nome do host. Use o seguinte formato de URI para um recurso no Azurite:

http://<local-machine-address>:<port>/<account-name>/<resource-path>

O endereço a seguir pode ser usado para acessar um blob no Azurite:

http://127.0.0.1:10000/myaccount/mycontainer/myblob.txt

URL no estilo de produção

Opcionalmente, você pode modificar o arquivo de hosts para acessar uma conta com a URL no estilo de produção.

Primeiro, adicione uma ou mais linhas ao arquivo de hosts. Por exemplo:

127.0.0.1 account1.blob.localhost
127.0.0.1 account1.queue.localhost
127.0.0.1 account1.table.localhost

Depois, defina variáveis de ambiente para habilitar as chaves e as contas de armazenamento personalizadas:

set AZURITE_ACCOUNTS="account1:key1:key2"

Você pode adicionar mais contas. Consulte a seção Contas de armazenamento personalizadas e chaves do artigo Conectar ao Azurite .

Inicie o Azurite e use uma cadeia de conexão personalizada para acessar sua conta. No exemplo a seguir, a cadeia de conexão pressupõe que são usadas as portas padrão.

DefaultEndpointsProtocol=http;AccountName=account1;AccountKey=key1;BlobEndpoint=http://account1.blob.localhost:10000;QueueEndpoint=http://account1.queue.localhost:10001;TableEndpoint=http://account1.table.localhost:10002;

Não acesse a conta padrão dessa forma com o Gerenciador de Armazenamento do Azure. Há um bug em que o Gerenciador de Armazenamento está sempre adicionando o nome da conta no caminho da URL, causando falhas.

Por padrão, quando o Azurite é usado com uma URL de estilo de produção, o nome da conta deve ser o nome do host no nome de domínio totalmente qualificado, como http://devstoreaccount1.blob.localhost:10000/container. Para usar a URL de estilo de produção com o nome da conta no caminho da URL, como http://foo.bar.com:10000/devstoreaccount1/container, use o parâmetro --disableProductStyleUrl ao iniciar o Azurite.

Se você usar host.docker.internal como o host do URI de solicitação (por exemplo: http://host.docker.internal:10000/devstoreaccount1/container), o Azurite obtém o nome da conta do caminho do URI de solicitação. Esse comportamento é verdadeiro independentemente de você usar ou não o parâmetro --disableProductStyleUrl ao iniciar o Azurite.

Dimensionamento e desempenho

O Azurite não suporta um grande número de clientes conectados. Não há garantia de desempenho. O Azurite destina-se para desenvolvimentos e testes.

Tratamento de erros

O Azurite está alinhado com a lógica de tratamento de erros do Armazenamento do Microsoft Azure, mas há diferenças. Por exemplo, as mensagens de erro podem ser diferentes, embora os códigos de status de erro estejam alinhados.

RA-GRS

O Azurite suporta a replicação com redundância geográfica com acesso de leitura (RA-GRS). Para recursos de armazenamento, acesse o local secundário anexando -secondary ao nome da conta. Por exemplo, o endereço a seguir pode ser usado para acessar um blob usando o secundário de somente leitura no Azurite:

http://127.0.0.1:10000/devstoreaccount1-secondary/mycontainer/myblob.txt

Suporte a tabelas

No momento, o suporte para tabelas está em versão prévia no Azurite. Para obter mais informações, confira o projeto Tabela do Azurite v3.

O suporte para funções duráveis requer tabelas.

Importante

No momento, o suporte do Azurite para o Armazenamento de Tabelas está em VERSÃO PRÉVIA. Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

O Azurite é open-source

As contribuições e sugestões para o Azurite são bem-vindas. Vá até a página do Projeto GitHub do Azurite ou Problemas do GitHub para conhecer os marcos e itens do trabalho que estamos acompanhando das futuras funcionalidades e correções de bugs. Os itens de trabalho detalhados também são acompanhados no GitHub.

Estrutura do espaço de trabalho

Os arquivos e as pastas a seguir podem ser criados no local do workspace durante a inicialização do Azurite.

  • __blobstorage__ - diretório contendo dados binários gravados do serviço Blob do Azurite
  • __queuestorage__ - diretório contendo dados binários gravados do serviço de fila do Azurite
  • __tablestorage__ - diretório contendo dados binários gravados do serviço de tabela do Azurite
  • __azurite_db_blob__.json - arquivo de metadados do serviço Blob do Azurite
  • __azurite_db_blob_extent__.json - arquivo de metadados de extensão do serviço Blob do Azurite
  • __azurite_db_queue__.json - arquivo de metadados do serviço de fila do Azurite
  • __azurite_db_queue_extent__.json - arquivo de metadados de extensão do serviço de fila do Azurite
  • __azurite_db_table__.json - arquivo de metadados do serviço de tabela do Azurite
  • __azurite_db_table_extent__.json - arquivo de metadados de extensão do serviço de tabela do Azurite

Para limpar o Azurite, exclua os arquivos e pastas e reinicie o emulador.

Próximas etapas