Firebase-tools: A hospedagem não executa a função se a região da função não for padrão

Criado em 28 jul. 2018  ·  41Comentários  ·  Fonte: firebase/firebase-tools

Informação da versão

4,00

Informações da plataforma

OS X

Passos para reproduzir

função implantada em europe-west1

// function code
const functions = require('firebase-functions');

exports.helloIvanA = functions
  .region('europe-west1')
  .https.onRequest((request, response) => {
    response.send('Hello from Ivan!');
  });

// firebase.json
{
  "hosting": {
    "public": "public",

    "rewrites": [
      {
        "source": "**",
        "function": "helloIvanA"
      }
    ]
  }
}

Comportamento esperado

https://blablabla.firebaseapp.com obterá dados de helloIvanA

Comportamento real

https://blablabla.firebaseapp.com redireciona para https://us-central1-yushkarala.cloudfunctions.net/helloIvanA/
e dá
Error: Forbidden Your client does not have permission to get URL /helloIvanA/ from this server.

Comentários muito úteis

Adoraria ver isso implementado. Meus visitantes são da Europa, e o TTFB de us-central1 é pelo menos 3x maior que europe-west1 .

Todos 41 comentários

Olá, esse é o comportamento esperado, consulte https://firebase.google.com/docs/functions/locations#http_and_client_callable_functions , a caixa azul indica que todas as funções que servem como redirecionamentos de hospedagem devem estar em 'us-central1', isso é devido ao fato de que é onde está a origem da hospedagem.

Obrigado, alguma chance de que esse comportamento esperado seja alterado em um futuro próximo ou pelo menos em um futuro?

Olá, isso mudará em um futuro, mas não em um futuro próximo. Depende de quando o Firebase Hosting é lançado em outras regiões.

Olá,
Meu problema é muito parecido com este, mas minhas funções devem estar na UE, pois usa rede externa, e a latência é muito melhor desta forma (2-4 seg vs 4-600 ms) tempo de execução
Descreveu meu problema em:
https://github.com/firebase/firebase-js-sdk/issues/1101
então não há solução ainda para usar reescritas para outra região no momento?
(Eu tenho uma solução alternativa, usando links diretos para acessar a função da UE, mas isso não é o ideal do lado do desenvolvimento, preciso reimplantar tudo para testá-lo)

Adoraria ver isso implementado. Meus visitantes são da Europa, e o TTFB de us-central1 é pelo menos 3x maior que europe-west1 .

Olá, isso mudará em um futuro, mas não em um futuro próximo. Depende de quando o Firebase Hosting é lançado em outras regiões.

Olá @laurenzlong ,

isso significa que quando a hospedagem estiver disponível em outros locais que us-central1 , também poderemos contornar a seguinte limitação?
Important: If you are using HTTP functions to serve dynamic content for hosting, you must use us-central1. do documento

Eu preciso desse recurso para o meu aplicativo. Então, quanto mais cedo, melhor :)!

Muito obrigado por tudo isso.

Um aviso em negrito deve ser escrito até que isso seja corrigido. Passei muito tempo até perceber o que acontece.
Pelo menos adicione uma opção region às reescritas para que possamos redirecionar para a europa.

Espero que a função de nuvem para o Firebase suporte a opção region como a configuração cloud run . Estou usando a região tokyo . Está muito longe de us-central1 .

isso significa que quando a hospedagem estiver disponível em outros locais que us-central1 , também poderemos contornar a seguinte limitação?
Important: If you are using HTTP functions to serve dynamic content for hosting, you must use us-central1. do documento

Olá @laurenzlong ,

você tem algum (bom)? novidades sobre isso?

Concordo que, como disse @wangchou , a execução na nuvem seria uma alternativa, mas adiciona pilha de serviços/tecnologia.

Espero ler você em breve. Obrigado!

Ainda estamos analisando isso, mas agora nossa infraestrutura de origem está concentrada em us-central , o que significa que permitir o proxy de função em outras regiões acabaria criando latência extra na maioria dos casos. Por exemplo:

tokyo -> CDN edge -> origin (us-central) -> function (tokyo)

Isso significa que o tempo de ida e volta realmente dobra.

Estamos investigando a expansão dos locais de nossa infraestrutura de origem, mas até então estamos cautelosos em adicionar esse recurso, pois é mais provável que cause mais danos do que benefícios.

@mbleigh - Por favor, você poderia nos dar alguma estimativa de quando a origem do Hosting estará localizada fora dos EUA?

Todo o ambiente Firebase é incrível, mas isso nos faz pensar duas vezes antes de mudar para ele. Obrigada

Realmente não sei por que esse problema foi fechado se não foi resolvido, batendo +1.

Em segundo lugar, o Firebase é incrível, mas para usuários europeus essa é uma grande ressalva.

Desculpe, não podemos comentar sobre cronogramas, pois eles estão sujeitos a alterações. Eu aprecio a voz contínua para apoiar isso como um recurso, isso é definitivamente algo que levamos em consideração ao planejar e construir o produto.

Eu tenho um problema que pode estar relacionado a isso, mas não entendo completamente isso, então não sei. Se alguém que conhece melhor e tem tempo quiser comentar sobre isso, veja esta pergunta:

https://stackoverflow.com/questions/57367131/403-from-deployed-firebase-function

Seria ótimo ter isso, poderíamos finalmente adicionar uma reescrita de hospedagem às nossas funções que já vivem na europe-west1.

Seria ótimo mesmo. Por enquanto, também usando redirecionamentos como @hgghyxo mencionado:

Nome da função api
Região europe-west1

firebase.json

"redirects": {
    {
          "source": "/api/endpoint",
          "destination": "https://europe-west1-project-id.cloudfunctions.net/api/endpoint",
          "type": 301
    },
    ...
}

@mcoevert comentou em 19 de agosto de 2019, 10h36 GMT+2 :

Seria ótimo mesmo. Por enquanto, também usando redirecionamentos como @hgghyxo mencionado:

Os redirecionamentos não resolverão os problemas do CORS.

Gostaria de ver o suporte da região da europa também.

Parece que uma regravação agora pode ser feita com um serviço do Cloud Run hospedado na região europe-west1 (atualmente a única região da Europa disponível para o Cloud Run). Não é bem o mesmo, mas bem próximo.

Olá, esse é o comportamento esperado, consulte https://firebase.google.com/docs/functions/locations#http_and_client_callable_functions , a caixa azul indica que todas as funções que servem como redirecionamentos de hospedagem devem estar em 'us-central1', isso é devido ao fato de que é onde está a origem da hospedagem.

Desculpe, mas uma pequena caixa azul é facilmente perdida. Nós perdemos muitas horas com esse problema, pensando que era um problema de configuração do nosso lado.

Por que isso está fechado - é um problema para nós na Europa. Existe alguma explicação por que está funcionando apenas para a região nós?

Este problema foi encerrado porque é uma solicitação de recurso para o Firebase Hosting que não pode ser resolvida diretamente na Firebase CLI. As solicitações de recursos são rastreadas internamente e recomendamos que você solicite suporte para regiões adicionais por meio deste formulário .

Estamos definitivamente cientes de que muitos de vocês desejam esse recurso, obrigado pelo feedback!

Este problema foi encerrado porque é uma solicitação de recurso para o Firebase Hosting que não pode ser resolvida diretamente na Firebase CLI. As solicitações de recursos são rastreadas internamente e recomendamos que você solicite suporte para regiões adicionais por meio deste formulário .

Estamos definitivamente cientes de que muitos de vocês desejam esse recurso, obrigado pelo feedback!

As solicitações de recursos são rastreadas apenas internamente? Isso não traz muitos pedidos duplicados? Gostaria de mostrar suporte para esses recursos para incluir regiões fora dos EUA.

Sim -- se você enviar uma solicitação de recurso, nós a desduplicaremos em relação a outras para nosso rastreamento interno (e isso definitivamente ajuda a mostrar mais suporte para solicitações!).

Você pode usar o Cloud Run em vez de uma Função do Cloud se não precisar de uma VPC. O Cloud Run (totalmente gerenciado) não pode se conectar à rede VPC atualmente. Uma solução que testei para usar a VPC + domínio personalizado + Função do Cloud é usar um Cloud Run com um domínio personalizado que é um proxy para a Função do Cloud. Isso adiciona um pouco de sobrecarga, mas se o Cloud Run e o Cloud Function estiverem na mesma região, em teoria, não deve haver muita latência. Dito isto, eu o monitorei por um mês e o Cloud Run beta não é 100% tão estável:

image

Este é um repositório com o proxy que usei se você quiser implantá-lo no Cloud Run e experimentá-lo https://github.com/reactgraphqlacademy/cloud-run-proxy

Testei um trabalhador do Cloudflare com um proxy na mesma região que o Cloud Function e o monitorei no mesmo período. Era mais lento que o Cloud Run, embora fosse 100% confiável.

image

Você pode usar este código se quiser testar o trabalhador da Cloudflare https://gist.github.com/alexlbr/814446f03cf12e22f07ccaa580eb1154 . @wangchou Se não me engano, você pode executar o trabalhador do Cloudflare em Tokio, para que ele fique mais próximo da borda onde o usuário está, pois o Cloud Run ainda não é compatível com essa região.

O seguinte monitora a Função do Cloud diretamente sem nenhum proxy durante o mesmo período.

image

Eu usei https://uptimerobot.com para o monitoramento.

Cloud Run parece muito promissor para mim, mal posso esperar pelo lançamento completo

Alguma atualização sobre isso? Por que está fechado?

Impossível?

@abdellahaski @l2aelba Nós definitivamente ouvimos o ponto de dor aqui. Como @mbleigh disse anteriormente, arquivá-lo como uma solicitação de recurso (veja abaixo) é a melhor maneira de ajudar isso a ganhar força para nós internamente. Obrigado!

Este problema foi encerrado porque é uma solicitação de recurso para o Firebase Hosting que não pode ser resolvida diretamente na Firebase CLI. As solicitações de recursos são rastreadas internamente e recomendamos que você solicite suporte para regiões adicionais por meio deste formulário .

Estamos definitivamente cientes de que muitos de vocês desejam esse recurso, obrigado pelo feedback!

Também gostaria de ver o suporte do asia-east2.

Estou perto de desistir do Firebase por causa da documentação ruim.

Um mínimo absoluto seria emitir um aviso se não houver nenhuma função em us-central que corresponda à função no redirecionamento!

Sugiro que a equipe do Firebase tente permitir que alguém desenvolva um projeto em que os usuários estejam fora dos EUA. É uma loucura que não recebamos avisos para esse tipo de coisa.

Vamos ajudar uns aos outros fazendo o que eles pedem - poste uma solicitação de recurso:
https://firebase.google.com/support/troubleshooter/report/features

Aqui está um rascunho para você copiar/colar - é só fazer :)

Hospedagem reescreve funções em regiões fora dos EUA
https://github.com/firebase/firebase-tools/issues/842

Realmente precisa ser capaz de criar reescritas para funções em regiões que não sejam US-Central1.

Nosso público-alvo não está nos EUA e a falta desse recurso é um grande problema para nós, tornando-nos incertos para dedicar nossa pilha de tecnologia ao Firebase em geral.

Por favor, considere priorizar este recurso em um futuro próximo.
Obrigada,

image

Aqui esperando por esse recurso em breve!

Alguém já pesquisou sobre o uso de execução em nuvem em vez de funções de nuvem?

O Cloud Run fornece funcionalidades em outras regiões também

Dois anos depois e isso ainda é um problema. Por que isso está fechado a propósito?

Olá, esse é o comportamento esperado, consulte https://firebase.google.com/docs/functions/locations#http_and_client_callable_functions , a caixa azul indica que todas as funções que servem como redirecionamentos de hospedagem devem estar em 'us-central1', isso é devido ao fato de que é onde está a origem da hospedagem.

Paginação @laurenzlong

O Cloud Functions está disponível nas seguintes regiões:

  • us-central1 (Iowa)
  • us-east1 (Carolina do Sul)
  • us-east4 (Norte da Virgínia)
  • europe-west1 (Bélgica)
  • europe-west2 (Londres)
  • europe-west3 (Frankfurt)
  • Ásia-Leste2 (Hong Kong)
  • ásia-nordeste1 (Tóquio)

Eu escolhi eur3 (europe-west) porque estava no topo da lista junto com us-central1, e separado de outros locais. Achei que esses dois são padrão.

O que devo fazer, há alguma correção sobre isso?

Por que?????

Olá pessoal, obrigado por todos os comentários sobre isso. Definitivamente, ouvimos que você gostaria de ver as funções de suporte do Firebase Hosting fora de us-central1 . Infelizmente, há uma quantidade significativa de trabalho de infraestrutura que precisa acontecer antes que funcione bem, então não podemos simplesmente "virar um interruptor" e colocar outras regiões online.

Ouvimos sobre isso com bastante frequência como uma solicitação de recurso e está em nosso roteiro, embora eu não possa comentar sobre cronogramas específicos. Este repositório não é o local correto para postar solicitações de recursos para o produto Firebase Hosting como um todo. Se você estiver interessado nesse recurso, envie uma solicitação de recurso para que possamos continuar a acompanhar o interesse nele internamente e priorizar o trabalho que precisa acontecer para habilitá-lo.

Obrigado a todos!

Oi,

Acho que ninguém se importa onde você hospeda, queremos apenas uma correção simples para que o erro não seja exibido.

Essa correção pode ser feita no seu código, nada a ver onde você faz sua hospedagem..

E isso não é um pedido de recurso, a remoção de um bug não se torna um recurso. Basta remover esse bug

Obrigado..

Esta página foi útil?
0 / 5 - 0 avaliações