Firebase-tools: Хостинг не выполняет функцию, если область функции не указана по умолчанию

Созданный на 28 июл. 2018  ·  41Комментарии  ·  Источник: firebase/firebase-tools

Информация о версии

4.00

Информация о платформе

ОС Х

Действия по воспроизведению

функция развернута в 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"
      }
    ]
  }
}

Ожидаемое поведение

https://blablabla.firebaseapp.com получит данные от helloIvanA

Фактическое поведение

https://blablabla.firebaseapp.com перенаправляет на https://us-central1-yushkarala.cloudfunctions.net/helloIvanA/
и дает
Error: Forbidden Your client does not have permission to get URL /helloIvanA/ from this server.

Самый полезный комментарий

Хотелось бы увидеть это реализованным. Мои посетители из Европы, и TTFB от us-central1 как минимум в 3 раза больше, чем europe-west1 .

Все 41 Комментарий

Также пример репо https://github.com/istarkov/firebase-hosting-error

Привет, это ожидаемое поведение, см. https://firebase.google.com/docs/functions/locations#http_and_client_callable_functions , синее поле указывает, что все функции, которые служат для перенаправления хостинга, должны быть в «us-central1», это из-за того, что именно там находится хостинг.

Спасибо, есть ли шанс, что это ожидаемое поведение будет изменено в ближайшем будущем или, по крайней мере, в будущем?

Привет, это изменится в будущем, но не в ближайшем будущем. Это зависит от того, когда Firebase Hosting будет запущен в других регионах.

Привет,
Моя проблема очень похожа на эту, но мои функции должны быть в ЕС, так как он использует внешнюю сеть, и таким образом задержка намного лучше (2-4 секунды против 4-600 мс) время выполнения
Описал свою проблему в:
https://github.com/firebase/firebase-js-sdk/issues/1101
так что на данный момент нет решения использовать перезапись в другой регион?
(У меня есть обходной путь, используя прямые ссылки для доступа к функции ЕС, но это не идеально со стороны разработки, мне нужно заново развернуть все, чтобы проверить это)

Хотелось бы увидеть это реализованным. Мои посетители из Европы, и TTFB от us-central1 как минимум в 3 раза больше, чем europe-west1 .

Привет, это изменится в будущем, но не в ближайшем будущем. Это зависит от того, когда Firebase Hosting будет запущен в других регионах.

Привет @laurenzlong ,

означает ли это, что когда хостинг будет доступен в других местах, таких как us-central1 , мы также сможем обойти следующее ограничение?
Important: If you are using HTTP functions to serve dynamic content for hosting, you must use us-central1. из документа

Мне нужна эта функция для моего приложения. Так что, чем раньше, тем лучше :)!

Большое спасибо за все это.

Предупреждение жирным шрифтом должно быть написано до тех пор, пока это не будет исправлено. Я потратил слишком много времени, пока не понял, что происходит.
По крайней мере, добавьте опцию region в перезаписи, чтобы мы могли перенаправить на Европу.

Облачная функция Hope для Firebase поддерживает опцию $#$0 region cloud run . Я использую регион tokyo . Это действительно далеко от us-central1 .

означает ли это, что когда хостинг будет доступен в других местах, таких как us-central1 , мы также сможем обойти следующее ограничение?
Important: If you are using HTTP functions to serve dynamic content for hosting, you must use us-central1. из документа

Привет @laurenzlong ,

у тебя есть (хорошее)? новость об этом?

Я согласен с тем, что, как сказал @wangchou , облачный запуск был бы альтернативой, но он добавляет стек услуг / технологий.

Надеюсь скоро вас прочитать. Спасибо!

Мы все еще изучаем этот вопрос, но сейчас наша исходная инфраструктура сосредоточена в us-central , а это означает, что разрешение проксирования функций в других регионах в большинстве случаев приведет к дополнительной задержке. Например:

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

Это означает, что время прохождения туда и обратно фактически удваивается.

Мы изучаем возможность расширения расположения нашей исходной инфраструктуры, но до тех пор мы с осторожностью относимся к добавлению этой возможности, поскольку она скорее принесет вред, чем пользу.

@mbleigh - Не могли бы вы дать нам какие-либо оценки, когда происхождение хостинга будет находиться за пределами США?

Вся среда Firebase потрясающая, но это заставляет нас дважды подумать, прежде чем переходить на нее. Спасибо

На самом деле не знаю, почему этот вопрос был закрыт, если он не был решен, ставя +1.

Во-вторых, Firebase великолепен, но для европейских пользователей это серьезный недостаток.

К сожалению, мы не можем комментировать временные рамки, так как они слишком подвержены изменениям. Я ценю постоянный голос за поддержку этой функции, это определенно то, что мы принимаем во внимание при планировании и создании продукта.

У меня есть проблема, которая может быть связана с этим, но я не совсем понимаю это, поэтому я не знаю. Если кто-то, кто знает лучше и имеет время, хочет прокомментировать это, см. этот вопрос:

https://stackoverflow.com/questions/57367131/403-from-deployed-firebase-функция

Было бы здорово иметь это, мы могли бы, наконец, добавить переписывание хостинга к нашим функциям, уже живущим в europe-west1.

Было бы действительно здорово. На данный момент также используйте перенаправления, как упоминал @hgghyxo :

Имя функции api
Регион europe-west1

firebase.json

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

@mcoevert прокомментировал 19 августа 2019 г., 10:36 GMT+2 :

Было бы действительно здорово. На данный момент также используйте перенаправления, как упоминал @hgghyxo :

Однако перенаправления не решат проблемы CORS.

Также хотелось бы видеть поддержку европейского региона.

Похоже, что теперь можно выполнить перезапись с помощью службы Cloud Run, размещенной в регионе europe-west1 (в настоящее время это единственный европейский регион, доступный для Cloud Run). Это не совсем то же самое, но довольно близко.

Привет, это ожидаемое поведение, см. https://firebase.google.com/docs/functions/locations#http_and_client_callable_functions , синее поле указывает, что все функции, которые служат для перенаправления хостинга, должны быть в «us-central1», это из-за того, что именно там находится хостинг.

Извините, но крошечную синюю коробку легко не заметить. Мы потратили слишком много часов на эту проблему, думая, что это проблема конфигурации с нашей стороны.

Почему это закрыто - это вопрос для нас в Европе. Есть ли какое-нибудь объяснение, почему это работает только для нашего региона?

Эта проблема закрыта, поскольку это запрос функции для хостинга Firebase, который нельзя решить непосредственно в интерфейсе командной строки Firebase. Запросы функций отслеживаются внутри компании, и я рекомендую вам запрашивать поддержку для дополнительных регионов с помощью этой формы .

Мы точно знаем, что многие из вас хотят эту функцию, спасибо за отзыв!

Эта проблема закрыта, поскольку это запрос функции для хостинга Firebase, который нельзя решить непосредственно в интерфейсе командной строки Firebase. Запросы функций отслеживаются внутри компании, и я рекомендую вам запрашивать поддержку для дополнительных регионов с помощью этой формы .

Мы точно знаем, что многие из вас хотят эту функцию, спасибо за отзыв!

Запросы функций отслеживаются только внутри компании? Разве это не приводит к большому количеству повторяющихся запросов? Я хотел бы показать поддержку этих функций, чтобы включить регионы за пределами США.

Да — если вы отправите запрос функции, мы выполним его дедупликацию по сравнению с другими запросами для нашего внутреннего отслеживания (и это определенно поможет продемонстрировать большую поддержку запросов!).

Вы можете использовать Cloud Run вместо Cloud Function, если вам не нужен VPC. Cloud Run (полностью управляемый) в настоящее время не может подключиться к сети VPC. Обходной путь, который я протестировал для использования VPC + личный домен + облачная функция, — это использование Cloud Run с настраиваемым доменом, который является прокси для облачной функции. Это добавляет немного накладных расходов, но если ваш Cloud Run и Cloud Function находятся в одном регионе, то, теоретически, это не должно быть большой задержкой. При этом я наблюдал за ним больше месяца, и бета-версия Cloud Run не на 100% стабильна:

image

Это репозиторий с прокси-сервером, который я использовал, если вы хотите развернуть его в Cloud Run и попробовать https://github.com/reactgraphqlacademy/cloud-run-proxy .

Я протестировал воркер Cloudflare с прокси-сервером в том же регионе, что и облачная функция, и отслеживал его в течение того же периода. Это было медленнее, чем Cloud Run, хотя и было на 100% надежным.

image

Вы можете использовать этот код, если хотите протестировать воркер Cloudflare https://gist.github.com/alexlbr/814446f03cf12e22f07ccaa580eb1154 . @wangchou Если я не ошибаюсь, вы можете запустить воркер Cloudflare в Токио, чтобы он был ближе к краю, где находится пользователь, поскольку Cloud Run еще не поддерживается в этом регионе.

Следующее отслеживает облачную функцию напрямую без какого-либо прокси в течение того же периода.

image

Я использовал https://uptimerobot.com для мониторинга.

Cloud Run выглядит очень многообещающе, я не могу дождаться полной версии

Любые обновления по этому поводу? Почему он закрыт?

Невозможно?

@abdellahaski @l2aelba Мы определенно слышим здесь болевые точки. Как сказал @mbleigh ранее, подача запроса на добавление функции (см. ниже) — лучший способ помочь нам получить поддержку внутри компании. Спасибо!

Эта проблема закрыта, поскольку это запрос функции для хостинга Firebase, который нельзя решить непосредственно в интерфейсе командной строки Firebase. Запросы функций отслеживаются внутри компании, и я рекомендую вам запрашивать поддержку для дополнительных регионов с помощью этой формы .

Мы точно знаем, что многие из вас хотят эту функцию, спасибо за отзыв!

Также хотелось бы видеть поддержку asia-east2.

Я близок к тому, чтобы отказаться от firebase из-за плохой документации.

Абсолютным минимумом будет выдача предупреждения, если в us-central нет функции, соответствующей функции в перенаправлении!

Я предлагаю команде firebase попытаться позволить кому-то разработать проект, в котором пользователи находятся за пределами США. Это безумие, что мы не получаем предупреждений о таких вещах.

Давайте поможем друг другу, сделав то, что они просят — опубликуйте запрос функции:
https://firebase.google.com/support/troubleshooter/report/features

Вот черновик для копирования/вставки - просто сделайте это :)

Хостинг переписывается для работы в неамериканском регионе
https://github.com/firebase/firebase-tools/issues/842

Действительно нужно иметь возможность переписывать функции в регионах, отличных от US-Central1.

Наша целевая аудитория находится не в США, и отсутствие этой функции является для нас серьезной проблемой, из-за чего мы не уверены, стоит ли в целом выделять наш технический стек для Firebase.

Пожалуйста, подумайте над тем, чтобы сделать эту функцию приоритетной в ближайшем будущем.
Спасибо,

image

Здесь надеются на эту функцию в ближайшее время!

Кто-нибудь исследовал использование облачного запуска вместо облачных функций?

Облачный запуск также предоставляет функции в других регионах.

Прошло два года, а это все еще проблема... Кстати, почему это закрыто?

Привет, это ожидаемое поведение, см. https://firebase.google.com/docs/functions/locations#http_and_client_callable_functions , синее поле указывает, что все функции, которые служат для перенаправления хостинга, должны быть в «us-central1», это из-за того, что именно там находится хостинг.

Пейджинг @laurenzlong

Облачные функции доступны в следующих регионах:

  • us-central1 (Айова)
  • us-east1 (Южная Каролина)
  • us-east4 (Северная Вирджиния)
  • europe-west1 (Бельгия)
  • europe-west2 (Лондон)
  • europe-west3 (Франкфурт)
  • азия-восток2 (Гонконг)
  • азия-северо-восток1 (Токио)

Я выбрал eur3 (europe-west), потому что он был в начале списка вместе с us-central1 и отделен от других мест. Думал, что эти два по умолчанию.

Что мне делать, есть ли какое-то решение по этому поводу?

Почему?????

Привет, ребята, спасибо за все отзывы об этом. Мы определенно слышим, что вы хотели бы видеть функции поддержки Firebase Hosting за пределами us-central1 . К сожалению, необходимо выполнить значительный объем инфраструктурных работ, прежде чем все заработает, поэтому мы не можем просто «щелкнуть выключателем» и подключить другие регионы к сети.

Мы довольно часто слышали об этом как о запросе функции, и это включено в нашу дорожную карту, хотя я не могу комментировать конкретные сроки. Этот репозиторий не является подходящим местом для публикации запросов функций для продукта Firebase Hosting в целом. Если вы заинтересованы в этой функции, отправьте запрос функции , чтобы мы могли продолжать отслеживать интерес к ней внутри компании и расставлять приоритеты в работе. это должно произойти, чтобы включить его.

Спасибо всем!

Привет,

Я думаю, никого не волнует, где вы хостите, нам нужно простое исправление, чтобы ошибка не отображалась.

Это исправление может быть сделано в вашем коде, ничего не делать там, где вы делаете свой хостинг.

И это не запрос на фичу, удаление бага не становится фичей. Просто удали этот баг

Спасибо..

Была ли эта страница полезной?
0 / 5 - 0 рейтинги