Вы можете развертывать, удалять и изменять функции с помощью команд Firebase CLI или задавая параметры среды выполнения в исходном коде функций.
Как развернуть функции
Чтобы развернуть функции, выполните следующую команду CLI Firebase:
firebase deploy --only functions
По умолчанию интерфейс командной строки Firebase развертывает все функции в вашем источнике одновременно. Если в вашем проекте больше пяти функций, рекомендуем использовать флаг --only с названиями функций, чтобы развернуть только те, которые вы изменили. Развертывание определенных функций таким образом ускоряет процесс и помогает избежать превышения квот на развертывание. Пример:
firebase deploy --only functions:addMessage,functions:makeUppercase
При развертывании большого количества функций вы можете превысить стандартную квоту и получить сообщения об ошибках HTTP 429 или 500. Чтобы решить эту проблему, развертывайте функции группами по 10 или меньше.
Полный список доступных команд приведен в справочнике по CLI Firebase.
По умолчанию интерфейс командной строки Firebase ищет исходный код в папке functions/. При необходимости вы можете организовать функции в кодовых базах или нескольких наборах файлов.
Как удалить артефакты развертывания
В рамках развертывания функций создаются образы контейнеров, которые хранятся в Artifact Registry. Эти образы не нужны для работы развернутых функций. Cloud Functions получает и сохраняет копию образа при первоначальном развертывании, но сохраненные артефакты не требуются для работы функции во время выполнения.
Хотя образы контейнеров обычно небольшие, со временем их может накопиться много, что приведет к увеличению расходов на хранение. Вы можете сохранить их на определенный период, если планируете проверить созданные артефакты или выполнить сканирование контейнера на наличие уязвимостей.
Чтобы помочь вам управлять расходами на хранение, в Firebase CLI версии 14.0.0 и более поздних версий можно настроить правила очистки Artifact Registry для репозиториев, в которых хранятся артефакты развертывания после каждого развертывания функции.
Вы можете вручную настроить или изменить правило очистки с помощью команды functions:artifacts:setpolicy:
firebase functions:artifacts:setpolicy
По умолчанию эта команда настраивает Artifact Registry на автоматическое удаление образов контейнеров старше одного дня. Это обеспечивает разумный баланс между минимизацией затрат на хранение и возможностью проверки последних сборок.
Вы можете настроить период хранения с помощью параметра --days:
firebase functions:artifacts:setpolicy --days 7 # Delete images older than 7 days
Если вы развертываете функции в нескольких регионах, то можете настроить правила очистки для определенного местоположения с помощью параметра --location:
$ firebase functions:artifacts:setpolicy --location europe-west1
Как отключить очистку объектов
Если вы хотите управлять очисткой изображений вручную или не хотите, чтобы какие-либо изображения удалялись, вы можете полностью отключить правила очистки:
$ firebase functions:artifacts:setpolicy --none
Эта команда удаляет все существующие правила очистки, настроенные с помощью интерфейса командной строки Firebase, и запрещает Firebase настраивать правила очистки после развертывания функций.
Удалить функции
Удалить ранее развернутые функции можно следующими способами:
- явно в CLI Firebase с помощью
functions:delete. - в явном виде в консоли Google Cloud.
- неявно, удалив функцию из источника до развертывания.
При удалении функции из рабочей версии вам будет предложено подтвердить действие.
Явное удаление функций в интерфейсе командной строки Firebase поддерживает несколько аргументов, а также группы функций и позволяет указать функцию, выполняемую в определенном регионе. Кроме того, вы можете отключить запрос подтверждения.
Удаляет все функции с указанным названием во всех регионах:
firebase functions:delete FUNCTION-1_NAME
Удаляет указанную функцию, выполняющуюся в регионе, отличном от региона по умолчанию:
firebase functions:delete FUNCTION-1_NAME --region REGION_NAME
Удаляет несколько функций:
firebase functions:delete FUNCTION-1_NAME FUNCTION-2_NAME
Удаляет указанную группу функций:
firebase functions:delete GROUP_NAME
Пропускает запрос подтверждения:
firebase functions:delete FUNCTION-1_NAME --force
При неявном удалении функций firebase deploy анализирует источник и удаляет из рабочей версии все функции, которые были удалены из файла.
Как изменить название, регион или триггер функции
Если вы переименовываете или изменяете регионы или триггер для функций, обрабатывающих рабочий трафик, следуйте инструкциям в этом разделе, чтобы избежать потери событий во время изменения. Прежде чем выполнять описанные ниже действия, убедитесь, что ваша функция идемпотентна, поскольку во время изменения одновременно будут выполняться как новая, так и старая версии функции.
Как переименовать функцию
Чтобы переименовать функцию, создайте новую версию функции с новым названием в исходном коде, а затем выполните две отдельные команды развертывания. Первая команда развертывает функцию с новым названием, а вторая удаляет ранее развернутую версию. Например, если вы хотите переименовать веб-перехватчик, активируемый по протоколу HTTP, измените код следующим образом:
Node.js
// before
const {onRequest} = require('firebase-functions/v2/https');
exports.webhook = onRequest((req, res) => {
res.send("Hello");
});
// after
const {onRequest} = require('firebase-functions/v2/https');
exports.webhookNew = onRequest((req, res) => {
res.send("Hello");
});
Python
# before
from firebase_functions import https_fn
@https_fn.on_request()
def webhook(req: https_fn.Request) -> https_fn.Response:
return https_fn.Response("Hello world!")
# after
from firebase_functions import https_fn
@https_fn.on_request()
def webhook_new(req: https_fn.Request) -> https_fn.Response:
return https_fn.Response("Hello world!")
Затем выполните следующие команды, чтобы развернуть новую функцию:
# Deploy new function firebase deploy --only functions:webhookNew # Wait until deployment is done; now both functions are running # Delete webhook firebase functions:delete webhook
Как изменить регион или регионы функции
Если вы меняете регионы для функции, обрабатывающей рабочий трафик, чтобы избежать потери событий, выполните следующие действия в указанном порядке:
- Переименуйте функцию и измените ее регион или регионы.
- Разверните переименованную функцию, в результате чего один и тот же код будет временно выполняться в обоих наборах регионов.
- Удалите предыдущую функцию.
Например, если у вас есть функция, активируемая триггером Cloud Firestore, которая сейчас развернута в регионе us-central1, и вы хотите перенести ее в регион asia-northeast1, сначала измените исходный код, чтобы переименовать функцию и изменить регион.
Node.js
// before
exports.firestoreTrigger = onDocumentCreated(
"my-collection/{docId}",
(event) => {},
);
// after
exports.firestoreTriggerAsia = onDocumentCreated(
{
document: "my-collection/{docId}",
region: "asia-northeast1",
},
(event) => {},
);
В обновленном коде должен быть указан правильный фильтр событий (в данном случае document) и регион. Подробнее
Cloud Functionsо местоположении…
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
Затем разверните его, выполнив следующую команду:
firebase deploy --only functions:firestoreTriggerAsia
Теперь выполняются две одинаковые функции: firestoreTrigger в us-central1 и firestoreTriggerAsia в asia-northeast1.
Затем удалите firestoreTrigger:
firebase functions:delete firestoreTrigger
Теперь есть только одна функция – firestoreTriggerAsia, которая выполняется в asia-northeast1.
Как изменить тип триггера функции
По мере развития развертывания Cloud Functions for Firebase может возникнуть необходимость изменить тип триггера функции по разным причинам. Например, вы можете захотеть изменить тип события Firebase Realtime Database или Cloud Firestore.
Нельзя изменить тип события функции, просто изменив исходный код и запустив firebase deploy. Чтобы избежать ошибок, измените тип триггера функции, выполнив следующие действия:
- Измените исходный код, добавив новую функцию с нужным типом триггера.
- Разверните функцию, чтобы временно запустить старую и новую функции.
- Явно удалите старую функцию из рабочей среды с помощью интерфейса командной строки Firebase.
Например, если у вас есть функция, которая запускается при удалении объекта, но вы включили управление версиями объектов и хотите подписаться на событие архивации, сначала переименуйте функцию и измените ее, чтобы она имела новый тип триггера.
Node.js
// before
const {onObjectDeleted} = require("firebase-functions/v2/storage");
exports.objectDeleted = onObjectDeleted((event) => {
// ...
});
// after
const {onObjectArchived} = require("firebase-functions/v2/storage");
exports.objectArchived = onObjectArchived((event) => {
// ...
});
Python
# before
from firebase_functions import storage_fn
@storage_fn.on_object_deleted()
def object_deleted(event):
# ...
# after
from firebase_functions import storage_fn
@storage_fn.on_object_archived()
def object_archived(event):
# ...
Затем выполните следующие команды, чтобы сначала создать новую функцию, а затем удалить старую:
# Create new function objectArchived firebase deploy --only functions:objectArchived # Wait until deployment is done; now both objectDeleted and objectArchived are running # Delete objectDeleted firebase functions:delete objectDeleted
Как задать настройки среды выполнения
Cloud Functions for Firebase позволяет выбирать параметры среды выполнения, например версию среды выполнения Node.js, а также время ожидания, выделение памяти и минимальное/максимальное количество экземпляров функции.
Рекомендуем задавать эти параметры (кроме версии Node.js) в объекте конфигурации внутри кода функции. Этот
RuntimeOptions
объект является источником достоверной информации о параметрах выполнения функции и переопределяет параметры, заданные любым другим способом (например, с помощью консоли Google Cloud или gcloud CLI).
Если в процессе разработки вы вручную задаете параметры времени выполнения с помощью консоли Google Cloud или gcloud CLI и не хотите, чтобы эти значения переопределялись при каждом развертывании, задайте для параметра preserveExternalChanges значение true. Если задано значение true, Firebase объединяет параметры времени выполнения, заданные в коде, с настройками текущей развернутой версии функции в следующем порядке приоритета:
- Параметр задан в коде функций: переопределить внешние изменения.
- В коде функций задан параметр
RESET_VALUE: внешние изменения переопределяются значением по умолчанию. - Параметр не задан в коде функций, но задан в развернутой функции: используйте параметр, указанный в развернутой функции.
Использовать вариант preserveExternalChanges: true в большинстве случаев не рекомендуется, поскольку ваш код перестанет быть единственным источником информации о параметрах среды выполнения для ваших функций. Если вы используете его, проверьте консоль Google Cloud или используйте gcloud CLI, чтобы посмотреть полную конфигурацию функции.
Как задать версию Node.js
Firebase SDK для Cloud Functions позволяет выбрать среду выполнения Node.js. Вы можете настроить выполнение всех функций в проекте исключительно в среде выполнения, соответствующей одной из следующих поддерживаемых версий Node.js:
- Node.js 22
- Node.js 20
- Node.js 18 (устаревшая версия)
Поддержка Node.js версий 14 и 16 была прекращена в начале 2025 года. Развертывание с этими версиями отключено. Ознакомьтесь с графиком поддержки, чтобы узнать важную информацию о поддержке этих версий Node.js.
Чтобы задать версию Node.js:
Вы можете задать версию в поле engines в файле package.json, который был создан в каталоге functions/ во время инициализации.
Например, чтобы использовать только версию 20, измените следующую строку в файле package.json:
"engines": {"node": "20"}
Если вы используете менеджер пакетов Yarn или у вас есть другие особые требования к полю engines, вы можете задать среду выполнения для SDK Firebase для Cloud Functions в файле firebase.json:
{
"functions": {
"runtime": "nodejs20" // or nodejs22
}
}
CLI использует значение, заданное в firebase.json, вместо любого значения или диапазона, которые вы задали отдельно в package.json.
Как обновить среду выполнения Node.js
Чтобы обновить среду выполнения Node.js:
- Убедитесь, что для вашего проекта выбран тарифный план Blaze.
- Убедитесь, что вы используете Firebase CLI версии 11.18.0 или более поздней.
- Измените значение
enginesв файлеpackage.json, который был создан в каталогеfunctions/во время инициализации. Например, если вы переходите с версии 18 на версию 20, запись должна выглядеть так:"engines": {"node": "20"} - При необходимости проверьте изменения с помощью Firebase Local Emulator Suite.
- Повторно разверните все функции.
Как выбрать систему модулей Node.js
По умолчанию в Node.js используется система модулей CommonJS (CJS), но текущие версии Node.js также поддерживают модули ECMAScript (ESM). Cloud Functions поддерживает оба варианта.
По умолчанию в функциях используется CommonJS. Это означает, что импорт и экспорт выглядят следующим образом:
const {onRequest} = require("firebase-functions/https");
exports.helloWorld = onRequest(async (req, res) => res.send("Hello from Firebase!"));
Чтобы использовать ESM, задайте значение "type": "module" в файле package.json:
{
...
"type": "module",
...
}
После этого используйте синтаксис ESM import и export:
import {onRequest} from "firebase-functions/https";
export const helloWorld = onRequest(async (req, res) => res.send("Hello from Firebase!"));
Обе системы модулей полностью поддерживаются. Выберите тот, который лучше всего подходит для вашего проекта. Подробнее о модулях в Node.js…
Как задать версию Python
Firebase SDK для Cloud Functions версии 12.0.0 и более поздних позволяют выбрать среду выполнения Python. Укажите версию среды выполнения в файле firebase.json, как показано ниже:
{
"functions": {
"runtime": "python310" // or python311
}
}
Как управлять масштабированием
По умолчанию Cloud Functions for Firebase масштабирует количество запущенных экземпляров в зависимости от количества входящих запросов, при этом в периоды снижения трафика количество экземпляров может быть уменьшено до нуля. Однако если ваше приложение требует низкой задержки и вы хотите ограничить количество холодных запусков, вы можете изменить поведение по умолчанию, указав минимальное количество экземпляров контейнера, которые должны быть активны и готовы к обработке запросов.
Аналогичным образом можно задать максимальное число экземпляров, чтобы ограничить масштабирование в ответ на входящие запросы. Используйте этот параметр, чтобы контролировать расходы или ограничить количество подключений к вспомогательному сервису, например базе данных.
Используя эти настройки вместе с параметром concurrency для каждого экземпляра (новый параметр во втором поколении), вы можете управлять масштабированием функций. Характер вашего приложения и его функции определяют, какие настройки будут наиболее экономичными и обеспечат наилучшую производительность.
Для некоторых приложений с низким трафиком оптимальным вариантом будет более низкая нагрузка на ЦП без многопоточности. Для других, где холодный запуск является критической проблемой, установка высокого уровня параллелизма и минимального количества экземпляров означает, что набор экземпляров всегда будет поддерживаться в активном состоянии для обработки больших скачков трафика.
Для небольших приложений с низким трафиком установка низкого максимального количества экземпляров с высокой параллельностью означает, что приложение может обрабатывать всплески трафика без чрезмерных затрат. Однако имейте в виду, что если задать слишком низкое значение для параметра maximum instances, запросы могут быть отброшены при достижении лимита.
Разрешить параллельные запросы
В Cloud Functions for Firebase (первое поколение) каждый экземпляр мог обрабатывать только один запрос за раз, поэтому поведение масштабирования задавалось только с помощью минимального и максимального количества экземпляров.
В дополнение к управлению количеством экземпляров в Cloud Functions for Firebase (второго поколения) можно контролировать количество запросов, которые каждый экземпляр может обрабатывать одновременно, с помощью параметра concurrency. По умолчанию для параллелизма установлено значение 80, но вы можете задать любое целое число от 1 до 1000.
Функции с более высокими настройками параллелизма могут выдерживать пики трафика без холодного запуска, поскольку у каждого экземпляра, скорее всего, есть запас. Если экземпляр настроен на обработку до 50 одновременных запросов, но в настоящее время обрабатывает только 25, он может справиться с пиковой нагрузкой в 25 дополнительных запросов без необходимости холодного запуска нового экземпляра. Если же задать значение параллелизма 1, то из-за такого всплеска запросов может произойти 25 холодных запусков.
Этот упрощенный сценарий демонстрирует потенциальные преимущества параллельного выполнения. На самом деле масштабирование поведения для оптимизации эффективности и уменьшения холодных запусков с параллелизмом – более сложный процесс. Параллелизм в Cloud Functions for Firebase второго поколения обеспечивается Cloud Run и соответствует правилам автомасштабирования экземпляров контейнеров Cloud Run.
При экспериментировании с более высокими настройками параллелизма в Cloud Functions for Firebase (второго поколения) учитывайте следующее:
- Более высокие настройки одновременных задач могут требовать больше ресурсов ЦП и ОЗУ для оптимальной производительности до достижения практического предела. Функции, которые интенсивно обрабатывают изображения или видео, могут не справиться с 1000 одновременных запросов, даже если для них заданы максимальные настройки ЦП и ОЗУ.
- Поскольку Cloud Functions for Firebase (второе поколение) работает на базе Cloud Run, вы также можете ознакомиться с Google Cloud, чтобы узнать, как оптимизировать параллельное выполнение задач.
- Прежде чем переходить на многовалютность в рабочей среде, тщательно протестируйте ее в тестовой среде.
Поддерживать минимальное количество активных экземпляров
Вы можете задать минимальное количество экземпляров для функции в исходном коде. Например, эта функция задает минимум пять экземпляров, чтобы поддерживать тепло:
Node.js
const { onCall } = require("firebase-functions/v2/https");
exports.getAutocompleteResponse = onCall(
{
// Keep 5 instances warm for this latency-critical function
minInstances: 5,
},
(event) => {
// Autocomplete user’s search term
}
);
Python
@https_fn.on_call(min_instances=5)
def get_autocomplete_response(event: https_fn.CallableRequest) -> https_fn.Response:
При выборе минимального количества экземпляров учитывайте следующее:
- Если Cloud Functions for Firebase масштабирует приложение выше заданного вами значения, для каждого экземпляра, превышающего этот порог, будет выполняться холодный запуск.
- Холодные запуски сильнее всего влияют на приложения с пиковым трафиком. Если у вашего приложения неравномерный трафик и вы зададите достаточно высокое значение, чтобы при каждом увеличении трафика сокращать количество холодных запусков, то увидите значительное снижение задержки. Если у приложения постоянный трафик, холодный запуск вряд ли сильно повлияет на производительность.
Установка минимального количества экземпляров может быть целесообразной для рабочих сред, но обычно ее следует избегать в тестовых средах. Чтобы в тестовом проекте количество экземпляров масштабировалось до нуля, но при этом в рабочем проекте сокращалось время холодного запуска, можно задать минимальное количество экземпляров в параметризованной конфигурации:
Node.js
const { onRequest } = require('firebase-functions/https'); const { defineInt, defineString } = require('firebase-functions/params'); // Define some parameters const minInstancesConfig = defineInt('HELLO_WORLD_MININSTANCES'); const welcomeMessage = defineString('WELCOME_MESSAGE'); // To use configured parameters inside the config for a function, provide them // directly. To use them at runtime, call .value() on them. export const helloWorld = onRequest( { minInstances: minInstancesConfig }, (req, res) => { res.send(`${welcomeMessage.value()}! I am a function.`); } );Python
MIN_INSTANCES = params.IntParam("HELLO_WORLD_MININSTANCES") WELCOME_MESSAGE = params.StringParam("WELCOME_MESSAGE") @https_fn.on_request(min_instances=MIN_INSTANCES.value()) def get_autocomplete_response(event: https_fn.Request) -> https_fn.Response: return https_fn.Response(f"{WELCOME_MESSAGE.value()} I'm a function.")
Как ограничить максимальное количество экземпляров функции
Вы можете задать максимальное количество экземпляров в исходном коде функции. Например, эта функция устанавливает ограничение в 100 экземпляров, чтобы не перегружать гипотетическую устаревшую базу данных:
Node.js
const { onMessagePublished } = require("firebase-functions/v2/pubsub");
exports.mirrorevents = onMessagePublished(
{ topic: "topic-name", maxInstances: 100 },
(event) => {
// Connect to legacy database
}
);
Python
@pubsub_fn.on_message_published(topic="topic-name", max_instances=100)
def mirrorevents(event: pubsub_fn.CloudEvent):
# Connect to legacy database
Если HTTP-функция масштабируется до максимального количества экземпляров, новые запросы помещаются в очередь на 30 секунд, а затем отклоняются с кодом ответа 429 Too Many Requests, если к этому времени не будет доступен ни один экземпляр.
Чтобы узнать больше о том, как использовать настройки максимального количества экземпляров, ознакомьтесь с рекомендациями по настройке максимального количества экземпляров.
Как настроить сервисный аккаунт
У сервисных аккаунтов функций по умолчанию есть широкий набор разрешений, позволяющий взаимодействовать с другими сервисами Firebase и Google Cloud:
- Функции второго поколения: PROJECT_NUMBER-compute@developer.gserviceaccount.com (называется Сервисный аккаунт Compute Engine по умолчанию)
- Функции первого поколения: PROJECT_ID@
appspot.gserviceaccount.com (сервисный аккаунт по умолчанию для App Engine)
Вы можете переопределить сервисный аккаунт по умолчанию и ограничить функцию только необходимыми ресурсами. Для этого создайте специальный сервисный аккаунт и назначьте его нужной функции, используя значение конфигурации serviceAccount:
const { onRequest } = require("firebase-functions/https");
exports.helloWorld = onRequest(
{
// This function doesn't access other Firebase project resources, so it uses a limited service account.
serviceAccount:
"my-limited-access-sa@", // or prefer the full form: "my-limited-access-sa@my-project.iam.gserviceaccount.com"
},
(request, response) => {
response.send("Hello from Firebase!");
},
);
Если вы хотите задать один и тот же сервисный аккаунт для всех функций, это можно сделать с помощью функции setGlobalOptions.
Как задать время ожидания и распределение памяти
В некоторых случаях для функций могут действовать особые требования к длительному значению тайм-аута или большому объему памяти. Вы можете задать эти значения в консоли Google Cloud или в исходном коде функции (только для Firebase), используя значения времени ожидания в пределах следующих максимальных значений:
- HTTP и вызываемые функции: 3600 секунд (60 минут)
- Функции запланированных задач и очередей задач: 1800 секунд (30 минут).
- Другие функции, основанные на событиях: 540 секунд (9 минут).
Чтобы задать выделение памяти и время ожидания в исходном коде функций, используйте глобальные параметры memory и timeout seconds, чтобы настроить виртуальную машину, на которой выполняются ваши функции. Например, следующая функция Cloud Storage использует 1 ГБ памяти и завершает работу по истечении 300 секунд:
Node.js
exports.convertLargeFile = onObjectFinalized({
timeoutSeconds: 300,
memory: "1GiB",
}, (event) => {
// Do some complicated things that take a lot of memory and time
});
Python
@storage_fn.on_object_finalized(timeout_sec=300, memory=options.MemoryOption.GB_1)
def convert_large_file(event: storage_fn.CloudEvent):
# Do some complicated things that take a lot of memory and time.
Чтобы задать распределение памяти и время ожидания в консоли Google Cloud, выполните следующие действия:
- В консоли Google Cloud выберите Cloud Functions for Firebase в меню слева.
- Выберите функцию, нажав на ее название в списке.
- Нажмите на значок Изменить в верхнем меню.
- Выберите объем памяти в раскрывающемся меню Выделенная память.
- Нажмите Ещё, чтобы посмотреть дополнительные параметры, и введите количество секунд в текстовом поле Время ожидания.
- Нажмите Сохранить, чтобы обновить функцию.
Как переопределить настройки ЦП по умолчанию
Выделяется до 2 ГБ памяти. Каждая функция в Cloud Functions for Firebase (второе поколение) по умолчанию использует один ЦП, а затем увеличивает это значение до двух ЦП для 4 и 8 ГБ. Обратите внимание, что это существенно отличается от поведения по умолчанию в первом поколении, что может привести к немного более высоким затратам для функций с низким объемом памяти, как показано в следующей таблице:
| Выделенная оперативная память | Версия 1, ЦП по умолчанию (дробное значение) | ЦП по умолчанию для версии 2 | Повышение цены за миллисекунду |
|---|---|---|---|
| 128 МБ | 1/12 | 1 | 10,5x |
| 256 МБ | 1/6 | 1 | 5,3x |
| 512 МБ | 1/3 | 1 | 2,7x |
| 1 ГБ | 7/12 | 1 | 1,6x |
| 2 ГБ | 1 | 1 | 1x |
| 4 ГБ | 2 | 2 | 1x |
| 8 ГБ | 2 | 2 | 1x |
| 16 ГБ | – | 4 | – |
Если вы хотите, чтобы функции второго поколения работали так же, как функции первого поколения, задайте настройки по умолчанию для первого поколения в качестве глобального параметра:
Node.js
// Turn off Firebase defaults
setGlobalOptions({ cpu: 'gcf_gen1' });
Python
# Use 1st gen behavior
set_global_options(cpu="gcf_gen1")
Для функций, требующих значительных ресурсов процессора, во втором поколении можно настроить дополнительные процессоры. Вы можете повысить производительность процессора для каждой функции отдельно, как показано ниже:
Node.js
// Boost CPU in a function:
export const analyzeImage = onObjectFinalized({ cpu: 2 }, (event) => {
// computer vision goes here
});
Python
# Boost CPU in a function:
@storage_fn.on_object_finalized(cpu=2)
def analyze_image(event: storage_fn.CloudEvent):
# computer vision goes here