Google is committed to advancing racial equity for Black communities. See how.
This page was translated by the Cloud Translation API.
Switch to English

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

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

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

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

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

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

  • us-west2 (Лос-Анджелес)
  • us-west3 (Солт-Лейк-Сити)
  • us-west4 (Лас-Вегас)
  • europe-west3 (Франкфурт)
  • europe-west6 (Цюрих)
  • northamerica-northeast1 (Монреаль)
  • southamerica-east1 (Сан-Паулу)
  • australia-southeast1 (Сидней)
  • asia-south1 (Мумбаи)
  • 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 .

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

Swift

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 Firestore или сегментом хранилища внутри функции, то рекомендуемый регион такой же, как если бы у вас была функция, запускаемая одним из этих ресурсов. В противном случае используйте регион по умолчанию us-central1 . Также обратите внимание, что функции, подключенные к Firebase Hosting, должны находиться в us-central1 .

Выбор регионов на основе облачных хранилищ и хранилищ

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

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

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

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