Firebase Functions - Customizando Domínio das Funções

Olá meus Unicórnios! 🦄✨

Por padrão, o Firebase ira criar as funções com o endereço abaixo, variando de acordo com a região e o projeto:

https://us-central1-testespaloma.cloudfunctions.net/helloworld

Porem, são endereços não amigáveis e ruins de implantarmos em um projeto final.

Então, para meus testes, irei criar um subdominio:

testespaloma.palomamacetko.com.br

💡
Você pode utilizar domínios principais também, fica ao seu critério

Acesse o Console do Firebase e acesse o seu Projeto.

No menu da esquerda, clique em "Criação -> Hosting":

Na janela aberta, clique em "Vamos começar":

Será aberto uma janela para configuração, clique em "Próximo" e ao final em "Continuar no Console":

Agora podemos utilizar os recursos do "Hosting".

Em "Domínios" clique em "Adicionar um Domínio Personalizado":

No campo "Domínio" iremos preencher com nosso domínio personalizado, que neste tutorial é "testespaloma.palomamacetko.com.br":

NÃO marque o campo "Redirecionar [Dominio] para um site existente" e clique em "Continuar":

Será exibido as configurações que precisamos aplicar em nosso Dns:

A configuração é bem simples, basta criarmos um CNAME que aponte ao endereço indicado.

Aqui, utilizo a CloudFlare, então irei criar a entrada:

💡
Não ative o Proxy, deixe o tráfego fluir sem restrições para o servidor da Google

Na janela de configuração do domínio, no Firebase, clique em "Verificar":

Se tudo tiver sido feito corretamente, será exibido "Configuração domínio personalizado concluída":

💡
Alguns minutos após, a Google ira criar o SSL para este domínio personalizado

Como já criarmos o domínio personalizado, precisamos configurar nosso projeto para ter um "Rewrite".

Iremos criar um rewrite de "helloworld" para a função de mesmo nome.

Abra o arquivo "firebase.json" dentro de seu Projeto:

Abaixo do elemento "functions" iremos criar um elemento "hosting" com os recursos de Rewrite:

{
  "functions": [
    {
      "source": "functions",
      "codebase": "default",
      "ignore": [
        "node_modules",
        ".git",
        "firebase-debug.log",
        "firebase-debug..log",
        ".local"
      ]
    }
  ],
  "hosting": {
    "rewrites": [
      {
        "source": "/helloworld/**",
        "function": {
          "functionId": "helloworld"
        }
      }
    ]
  }
}

E em seguida, precisamos fazer o Deploy, mas com uma alteração no comando para que envie as alterações do "hosting" também:

firebase deploy --only functions,hosting

Durante o Depoy, você vai observar algumas novas linhas, no log, relacionadas ao hosting:

Depois do Deploy, iremos testar a chamada a função "helloworld" com o novo domínio:

https://testespaloma.palomamacetko.com.br/helloworld/

Se tudo der certo, iremos ver um HttpCode 200:

Por hoje é só, meus unicórnios! 🦄✨

Que a magia do arco-íris continue brilhando em suas vidas! Até mais! 🌈🌟