Cloud Functions является региональным решением , что означает, что инфраструктура, на которой выполняется ваша функция, расположена в определенных регионах и управляется Google, чтобы быть избыточно доступной во всех зонах этих регионов.
При выборе регионов для запуска ваших функций, вашими основными соображениями должны быть задержка и доступность. Обычно вы можете выбирать регионы, близкие к вашим пользователям, но вы также должны учитывать местоположение других продуктов и сервисов , которые использует ваше приложение. Использование сервисов в нескольких регионах может повлиять на задержку вашего приложения, а также на цены .
По умолчанию функции запускаются в регионе us-central1
. Обратите внимание, что он может отличаться от региона источника событий, например, контейнера Cloud Storage . Узнайте, как указать регион, в котором запускается функция, далее на этой странице.
Поддерживаемые регионы
В списках этого раздела значок energy_savings_leaf указывает на то, что электроэнергия для этого региона производится с низкими выбросами углерода. Для получения дополнительной информации см. Carbon free energy for Google Cloud regions .
Ценообразование уровня 1
Cloud Functions доступен в следующих регионах по ценам уровня 1 :
Область | Расположение | Поддерживаемые версии продукта | Выбросы CO2 |
---|---|---|---|
africa-south1 | Йоханнесбург | только 2-е поколение | |
asia-east1 | Тайвань | 1-е поколение, 2-е поколение | |
asia-east2 | Гонконг | только 1-е поколение | |
asia-northeast1 | Токио | 1-е поколение, 2-е поколение | |
asia-northeast2 | Осака | 1-е поколение, 2-е поколение | |
europe-north1 | Финляндия | только 2-е поколение | лист_сбережения_энергии |
europe-north2 | Стокгольм | только 2-е поколение | лист_сбережения_энергии |
europe-southwest1 | Мадрид | только 2-е поколение | |
europe-west1 | Бельгия | 1-е поколение, 2-е поколение | лист_сбережения_энергии |
europe-west4 | Нидерланды | только 2-е поколение | |
europe-west8 | Милан | только 2-е поколение | |
europe-west9 | Париж | только 2-е поколение | лист_сбережения_энергии |
me-west1 | Тель-Авив | только 2-е поколение | |
northamerica-south1 | Мексика | только 2-е поколение | |
europe-west2 | Лондон | только 1-е поколение | |
us-central1 | Айова | 1-е поколение, 2-е поколение | лист_сбережения_энергии |
us-east1 | Южная Каролина | 1-е поколение, 2-е поколение | |
us-east4 | Северная Вирджиния | 1-е поколение, 2-е поколение | |
us-east5 | Колумбус | только 2-е поколение | |
us-south1 | Даллас | только 2-е поколение | |
us-west1 | Орегон | 1-е поколение, 2-е поколение | лист_сбережения_энергии |
Ценообразование уровня 2
Cloud Functions доступен в следующих регионах по ценам уровня 2 :
Область | Расположение | Поддерживаемые версии продукта | Выбросы CO2 |
---|---|---|---|
asia-east2 | Гонконг | только 2-е поколение | |
asia-northeast3 | Сеул | 1-е поколение, 2-е поколение | |
asia-southeast1 | Сингапур | 1-е поколение, 2-е поколение | |
asia-southeast2 | Джакарта | 1-е поколение, 2-е поколение | |
asia-south1 | Мумбаи | только 2-е поколение | |
asia-south2 | Дели, Индия | только 2-е поколение | |
australia-southeast1 | Сидней | 1-е поколение, 2-е поколение | |
australia-southeast2 | Мельбурн | только 2-е поколение | |
europe-central2 | Варшава | 1-е поколение, 2-е поколение | |
europe-west2 | Лондон | только 2-е поколение | |
europe-west3 | Франкфурт | 1-е поколение, 2-е поколение | лист_сбережения_энергии |
europe-west6 | Цюрих | 1-е поколение, 2-е поколение | лист_сбережения_энергии |
europe-west10 | Берлин | только 2-е поколение | |
europe-west12 | Турин | только 2-е поколение | |
me-central1 | Доха | только 2-е поколение | |
me-central2 | Даммам | только 2-е поколение | |
northamerica-northeast1 | Монреаль | 1-е поколение, 2-е поколение | лист_сбережения_энергии |
northamerica-northeast2 | Торонто | только 2-е поколение | лист_сбережения_энергии |
southamerica-east1 | Сан-Паулу | 1-е поколение, 2-е поколение | лист_сбережения_энергии |
southamerica-west1 | Сантьяго, Чили | только 2-е поколение | |
us-west2 | Лос-Анджелес | 1-е поколение, 2-е поколение | |
us-west3 | Солт-Лейк-Сити | 1-е поколение, 2-е поколение | |
us-west4 | Лас-Вегас | 1-е поколение, 2-е поколение |
Функции в определенном регионе определенного проекта должны иметь уникальные (без учета регистра) имена, но функции в разных регионах или проектах могут иметь одно и то же имя.
Лучшие практики указания региона
По умолчанию функции запускаются в регионе us-central1
. Обратите внимание, что он может отличаться от региона источника событий, например, контейнера Cloud Storage . Если вам нужно указать регион, в котором запускается функция, следуйте рекомендациям в этом разделе для каждого типа триггера функции.
Чтобы задать регион, в котором выполняется функция, задайте параметр region
в определении функции, как показано:
Node.js
exports.firestoreAsia = onDocumentCreated(
{
document: "my-collection/{docId}",
region: "asia-northeast1",
},
(event) => {},
);
Питон
# Before
@firestore_fn.on_document_created("my-collection/{docId}")
def firestore_trigger(event):
pass
# After
@firestore_fn.on_document_created("my-collection/{docId}",
region="asia-northeast1")
def firestore_trigger_asia(event):
pass
Вы можете указать несколько регионов, передав несколько строк регионов, разделенных запятыми, в region
. Также обратите внимание, что при указании региона для многих типов фоновых триггеров вам нужно будет указать правильный фильтр событий вместе с регионом. В приведенном выше примере это document
Cloud Firestore , который генерирует событие. Для триггера Cloud Storage фильтром событий может быть bucket
; для триггера Pub/Sub это будет topic
и т. д.
Дополнительную информацию об изменении региона для функции, обрабатывающей производственный трафик, см. в разделе изменение региона функции.
HTTP и вызываемые клиентом функции
Для HTTP и вызываемых функций мы рекомендуем вам сначала установить функцию в целевой регион или в ближайший к нему регион, где находится большинство ожидаемых клиентов, а затем изменить исходную функцию, чтобы перенаправить ее HTTP-запрос в новую функцию (они могут иметь одинаковое имя). Если клиенты вашей HTTP-функции поддерживают перенаправления, вы можете просто изменить исходную функцию, чтобы она возвращала статус перенаправления HTTP (301) вместе с URL-адресом вашей новой функции. Если ваши клиенты плохо справляются с перенаправлениями, вы можете проксировать запрос из исходной функции в новую функцию, инициировав новый запрос из исходной функции в новую функцию. Последний шаг — убедиться, что все клиенты вызывают новую функцию.
Выбор местоположения на стороне клиента для вызываемых функций
Что касается вызываемой функции, вызываемые клиентом настройки должны следовать тем же рекомендациям, что и функции HTTP. Клиент также может указать регион и должен сделать это, если функция выполняется в любом регионе, кроме us-central1
.
Чтобы задать регионы на клиенте, укажите нужный регион при инициализации:
Быстрый
lazy var functions = Functions.functions(region:"europe-west1")
Objective-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");
Фоновые функции
Фоновые функции принимают семантику доставки событий по крайней мере один раз, что означает, что при некоторых обстоятельствах они могут получать дублирующие события. Поэтому вам следует реализовать функции так, чтобы они были идемпотентными . Если ваша функция уже идемпотентна, вы можете повторно развернуть функцию в новом регионе с тем же триггером события и удалить старую функцию после того, как убедитесь, что новая функция правильно получает трафик. Во время этого перехода обе функции будут получать события. См. изменение региона функции для рекомендуемой последовательности команд для изменения регионов для функций.
Если ваша функция в данный момент не является идемпотентной или ее идемпотентность не распространяется за пределы региона, то мы рекомендуем вам сначала реализовать идемпотентность, прежде чем перемещать функцию.
Оптимальные рекомендации по региону различаются в зависимости от типа триггера события:
Тип триггера | Рекомендация региона |
---|---|
Cloud Firestore | Ближайший регион к местоположению экземпляра Cloud Firestore (см. следующий раздел) |
Realtime Database | Всегда us-central1 |
Cloud Storage | Ближайший регион к расположению контейнера Cloud Storage (см. следующий раздел) |
Другие | Если вы взаимодействуете с экземпляром Realtime Database , экземпляром Cloud Firestore или контейнером Cloud Storage внутри функции, то рекомендуемый регион такой же, как если бы у вас была функция, вызванная одним из этих ресурсов. В противном случае используйте регион по умолчанию us-central1 . Функции, подключенные к Firebase Hosting могут находиться в любом регионе, но см. обзор hosting serverless для рекомендаций. |
Выбор регионов на основе местоположений 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 |
europe-west4 (Нидерланды) | europe-west1 |
asia-south1 (Мумбаи) | asia-east2 |
asia-south2 (Дели) | asia-east2 |
australia-southeast2 (Мельбурн) | australia-southeast1 |