Antes de conectar seu app ao emulador Cloud Storage for Firebase, entenda o fluxo de trabalho geral do Firebase Local Emulator Suite, instale e configure o Local Emulator Suite e analise os comandos da CLI.
Escolher um projeto do Firebase
O Firebase Local Emulator Suite emula produtos para um único projeto do Firebase.
Na CLI, execute
firebase use
no diretório de trabalho antes de iniciar os emuladores para selecionar o projeto a ser usado. Como opção, é possível transmitir
a flag --project
para cada comando
do emulador.
Local Emulator Suite oferece suporte à emulação de projetos reais do Firebase e projetos de demonstração.
Tipo de projeto | Recursos | Usar com emuladores |
---|---|---|
Real |
Um projeto real do Firebase é aquele que você criou e configurou (provavelmente pelo console do Firebase). Os projetos reais têm recursos ativos, como instâncias de banco de dados, buckets de armazenamento, funções ou qualquer outro recurso configurado para o projeto do Firebase. |
Ao trabalhar com projetos reais do Firebase, é possível executar emuladores para qualquer um ou todos os produtos suportados. Para todos os produtos que você não estiver emulando, os apps e o código interagem com recursos ativos, como o banco de dados, o bucket de armazenamento, a função etc. |
Demonstração |
Um projeto de demonstração do Firebase não tem configuração real nem recursos ativos. Em geral, esses projetos são acessados usando codelabs ou outros tutoriais. Os IDs dos projetos de demonstração têm o prefixo |
Ao trabalhar com projetos de demonstração do Firebase, os apps e códigos interagem apenas com emuladores. Se o app tentar interagir com um recurso em que um emulador não esteja em execução, o código falhará. |
Recomendamos que você use projetos de demonstração sempre que possível. Alguns dos benefícios são:
- Configuração mais fácil, já que é possível executar os emuladores sem precisar criar um projeto do Firebase
- Mais segurança, já que, se o código invocar acidentalmente recursos não emulados (produção), não haverá chance de alteração, uso e faturamento de dados
- Melhor suporte off-line, já que não é necessário acessar a Internet para fazer o download da configuração do SDK
Instruir o app a se comunicar com os emuladores
SDKs do Android, da Apple e da Web
Defina a configuração no app ou as classes de teste para interagir com o emulador do Cloud Storage for Firebase conforme mostrado a seguir.
Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val storage = Firebase.storage storage.useEmulator("10.0.2.2", 9199)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseStorage storage = FirebaseStorage.getInstance(); storage.useEmulator("10.0.2.2", 9199);
Swift
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)
Web
const { getStorage, connectStorageEmulator } = require("firebase/storage"); const storage = getStorage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. connectStorageEmulator(storage, "127.0.0.1", 9199); }
Web
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("127.0.0.1", 9199); }
Nenhuma configuração adicional é necessária para testar o Cloud Functions acionado por eventos do Cloud Storage for Firebase usando o emulador. Quando os emuladores de Cloud Storage for Firebase e Cloud Functions estiverem em execução, eles vão funcionar automaticamente juntos.
Admin SDKs
Os Firebase Admin SDKs se conectam automaticamente ao emulador de Cloud Storage for Firebase
quando a variável de ambiente FIREBASE_STORAGE_EMULATOR_HOST
está definida:
export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"
O emulador de Cloud Functions reconhece automaticamente o Cloud Storage for Firebase para pular essa etapa durante o teste de integrações entre emuladores de Cloud Functions e Cloud Storage for Firebase. A variável de ambiente será definida automaticamente para o SDK Admin em Cloud Storage for Firebase.
Se você quiser que o código do Admin SDK se conecte a um emulador compartilhado em execução em
outro ambiente, especifique o mesmo ID do projeto definido usando a CLI do Firebase.
É possível transmitir um ID do projeto para initializeApp
diretamente ou
definir a variável de ambiente GCLOUD_PROJECT
.
SDK Admin para Node.js
admin.initializeApp({ projectId: "your-project-id" });
Variável de ambiente
export GCLOUD_PROJECT="your-project-id"
Importar e exportar dados
Os emuladores de Cloud Storage for Firebase e banco de dados permitem exportar dados de uma instância do emulador em execução. Defina um conjunto de dados de referência para usar nos testes de unidade ou nos fluxos de trabalho de integração contínua e o exporte para que seja compartilhado com a equipe.
firebase emulators:export ./dir
Em testes, na inicialização do emulador, importe os dados de referência.
firebase emulators:start --import=./dir
Instrua o emulador a exportar dados no desligamento, especificando um
caminho de exportação ou simplesmente usando o caminho transmitido para a flag
--import
.
firebase emulators:start --import=./dir --export-on-exit
Essas opções de importação e exportação de dados também funcionam
com o comando firebase emulators:exec
. Para saber mais, consulte a
referência de comandos do emulador.
Qual é a diferença entre o emulador do Cloud Storage for Firebase e a produção?
Para testar apps cliente, o emulador do Cloud Storage for Firebase se alinha à produção quase perfeitamente em relação à área de superfície da API do Firebase. Espera-se que todos os comandos do Firebase funcionem entre os SDKs normais do Firebase (plataformas da Web, Android e Apple).
Existem limitações para o teste de apps do lado do servidor. Os SDKs Admin do Firebase usam a superfície da API do Google Cloud, e nem todos os endpoints dessa API são emulados. Como regra geral, tudo o que pode ser feito nos SDKs do cliente (upload ou exclusão de arquivos, recebimento e configuração de metadados) também é implementado para uso pelos SDKs Admin, mas qualquer tarefa fora isso não é implementado. As exclusões importantes estão listadas abaixo.
Diferenças do Google Cloud Storage
O produto Cloud Storage for Firebase, incluindo o emulador do Storage, oferece um subconjunto de funcionalidades do Google Cloud Storage (GCS) com foco em objetos de armazenamento úteis para desenvolver apps do Firebase. O Cloud Storage for Firebase difere do GCS das seguintes maneiras:
- No momento, Cloud Storage for Firebase não oferece suporte a APIs
Bucket
para criar, listar, receber ou excluir buckets de armazenamento. - A partir da API de objetos do Google Cloud Storage,
os métodos a seguir têm suporte:
copy
,delete
,get
,insert
,list
,patch
,rewrite
,update
.
Cloud IAM
O Pacote do emuladores do Firebase não tenta replicar nem respeitar qualquer comportamento relacionado ao IAM para execução. Os emuladores aderem às regras de segurança do Firebase fornecidas, mas em situações em que o IAM normalmente seria usado, por exemplo, para definir o Cloud Functions que invoca a conta de serviço e as permissões, o emulador não é configurável e usará a conta disponível globalmente na máquina de desenvolvimento, semelhante à execução direta de um script local.
Notificações do Pub/Sub
O emulador Cloud Storage for Firebase não se integra ao emulador de Pub/Sub do Cloud. Dessa forma, ele não permite criar canais/notificações para alterações nos objetos de armazenamento. Recomendamos usar gatilhos de armazenamento do Cloud Functions diretamente.
Metadados no nível do bucket
O emulador do Cloud Storage for Firebase não é compatível com nenhuma configuração no nível do bucket, incluindo a classe de armazenamento, a configuração do CORS, os rótulos ou as políticas de retenção no nível do bucket. O Firebase pretende melhorar esse suporte ao longo do tempo.
A seguir
- Para ver um conjunto selecionado de vídeos e exemplos detalhados de instruções, siga a playlist de treinamento dos emuladores do Firebase.
- Como as funções acionadas são uma integração típica com Cloud Storage for Firebase, saiba mais sobre o emulador de Cloud Functions for Firebase em Executar funções localmente.