Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Расположение облачных функций

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

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

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

  • us-central1 (Айова)
  • us-east1 (Южная Каролина)
  • us-east4 (Северная Вирджиния)
  • europe-west1 (Бельгия)
  • europe-west2 (Лондон)
  • asia-east1 (Тайвань)
  • asia-east2 (Hong Kong)
  • asia-northeast1 (Токио)
  • asia-northeast2 (Осака)

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

  • us-west2 (Лос - Анджелес)
  • us-west3 (Солт - Лейк - Сити)
  • us-west4 (Лас - Вегас)
  • northamerica-northeast1 (Монреаль)
  • southamerica-east1 Америка southamerica-east1 (Сан - Пауло)
  • europe-west3 (Франкфурт)
  • europe-west6 (Цюрих)
  • europe-central2 (Варшава)
  • australia-southeast1 (Сидней)
  • asia-south1 (Мумбай)
  • asia-southeast1 (Сингапур)
  • asia-southeast2 (Джакарта)
  • asia-northeast3 (Сеул)

Функции в данном регионе в данном проекте должны иметь уникальные (без учета регистра) имена, но функции в разных регионах или в проектах могут иметь одно и то же имя.

Лучшие практики для смены региона

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

Для того, чтобы установить область , когда функция работает, установить region параметра в определении функции , как показано:

exports.myStorageFunction = functions
    .region('europe-west1')
    .storage
    .object()
    .onFinalize((object) => {
      // ...
    });

Можно указать несколько областей, пропуская несколько разделенных запятыми строк в область functions.region() . См изменить область функции во для получения более подробной информации о рекомендуемых процедурах.

HTTP и функции, вызываемые клиентом

Для HTTP и вызываемых функций мы рекомендуем сначала установить функцию в регион назначения или ближайший к тому месту, где находятся наиболее ожидаемые клиенты, а затем изменить исходную функцию, чтобы перенаправить ее HTTP-запрос на новую функцию (они могут иметь то же самое имя). Если клиенты вашей функции HTTP поддерживают перенаправления, вы можете просто изменить исходную функцию, чтобы она возвращала статус перенаправления HTTP (301) вместе с URL-адресом вашей новой функции. Если ваши клиенты не обрабатывать редиректы хорошо, вы можете прокси запрос от исходной функции к новой функции, инициируя новый запрос от исходной функции к новой функции. Последний шаг - убедиться, что все клиенты вызывают новую функцию.

Выбор местоположения на стороне клиента для вызываемых функций

Что касается вызываемой функции, вызываемые клиентом настройки должны следовать тем же правилам, что и функции HTTP. Клиент также может указывать область, и должен сделать это , если функция работает в любом регионе, кроме us-central1 .

Чтобы задать регионы на клиенте, укажите желаемый регион при инициализации:

Быстрый

lazy var functions = Functions.functions(region:"europe-west1")

Цель-C

@property(strong, nonatomic) FIRFunctions *functions;
// ...
self.functions = [FIRFunctions functionsWithRegion:@"europe-west1"];

Интернет


var functions = firebase.app().functions('europe-west1');

Android

private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("europe-west1");

C ++

firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("europe-west1");

Единство

firebase.Functions.FirebaseFunctions functions;

functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");

Фоновые функции

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

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

Рекомендации по оптимальному региону различаются в зависимости от типа триггера события:

Тип триггера Рекомендация по региону
Cloud Firestore Ближайший регион к расположению экземпляра Cloud Firestore (см. Следующий раздел)
База данных в реальном времени Всегда us-central1
Облачное хранилище Ближайший регион к расположению корзины Cloud Storage (см. Следующий раздел)
Другие Если вы взаимодействуете с экземпляром базы данных в реальном времени, экземпляром Cloud Firestore или сегментом облачного хранилища внутри функции, то рекомендуемый регион такой же, как если бы у вас была функция, запускаемая одним из этих ресурсов. В противном случае, используйте область по умолчанию us-central1 . Следует также отметить , что функции , связанные с Firebase хостинг должен быть расположен в us-central1 .

Выбор регионов на основе местоположений Cloud Firestore и Cloud Storage

Доступные регионы для функций не всегда точно совпадают с регионами, доступными для вашей базы данных Cloud Firestore и ваших сегментов Cloud Storage.

Обратите внимание , что если ваша функция и ваш ресурс (экземпляр базы данных или ведро Cloud Storage) находится в разных местах, то вы могли бы потенциально опыт увеличились задержки и биллинговые затраты .

Вот отображение ближайших функций поддерживаемых регионов для облачных Firestore и Cloud Storage, за исключением случаев , когда тот же регион не поддерживается:

Регион / мультирегион для Cloud Firestore и Cloud Storage Ближайший регион для функций
nam5 или us-central (мульти-регион) us-central1
eur3 или europe-west (мульти-регион) europe-west1
asia-south1 (Мумбай) asia-east2