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

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

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

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

Поддерживаемые регионы

В списках этого раздела значок energy_savings_leaf указывает на то, что электроэнергия для этого региона производится с низким уровнем выбросов углекислого газа. Для получения дополнительной информации см. раздел «Энергия без выбросов углекислого газа для регионов Google Cloud» .

Ценообразование первого уровня

Cloud Functions доступен в следующих регионах по тарифам уровня 1 :

Область Расположение Поддерживаемые версии продукта Выбросы CO₂
africa-south1 Йоханнесбург Только для 2-го поколения
asia-east1 Тайвань 1-е поколение, 2-е поколение
asia-east2 Гонконг Только для первого поколения
asia-northeast1 Токио 1-е поколение, 2-е поколение
asia-northeast2 Осака 1-е поколение, 2-е поколение
europe-north1 Финляндия Только для 2-го поколения энергосбережение_лист
europe-southwest1 Мадрид Только для 2-го поколения
europe-west1 Бельгия 1-е поколение, 2-е поколение энергосбережение_лист
europe-west4 Нидерланды Только для 2-го поколения
europe-west8 Милан Только для 2-го поколения
europe-west9 Париж Только для 2-го поколения энергосбережение_лист
me-west1 Тель-Авив Только для 2-го поколения
europe-west2 Лондон Только для первого поколения
us-central1 Айова 1-е поколение, 2-е поколение энергосбережение_лист
us-east1 Южная Каролина 1-е поколение, 2-е поколение
us-east4 Северная Вирджиния 1-е поколение, 2-е поколение
us-east5 Колумб Только для 2-го поколения
us-south1 Даллас Только для 2-го поколения
us-west1 Орегон 1-е поколение, 2-е поколение энергосбережение_лист

Ценообразование второго уровня

Cloud Functions доступен в следующих регионах по тарифам уровня 2 :

Область Расположение Поддерживаемые версии продукта Выбросы CO₂
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) => {},
);

Python

# 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');

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

Выбор регионов на основе расположения 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