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

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

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

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

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

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

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

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

Рекомендации по смене региона

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

Чтобы установить регион, в котором выполняется функция, установите параметр 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');

Андроид

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

С++

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

Единство

firebase.Functions.FirebaseFunctions functions;

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

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

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

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

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

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

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

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

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

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

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