Задать количество одновременных вызовов экземпляра функции
Количество вызовов, одновременно обрабатываемых одним экземпляром функции (concurrency), не может превышать квоты. Параметр доступен не для всех сред выполнения. Подробнее в разделе Одновременные вызовы экземпляра функции.
- В консоли управления
перейдите в каталог, в котором находится функция. - Перейдите в сервис Cloud Functions.
- Выберите функцию.
- Перейдите на вкладку Редактор.
- В блоке Дополнительные настройки в разделе Одновременные вызовы экземпляра функции активируйте переключатель Включить и укажите количество одновременных вызовов экземпляра функции.
- Нажмите кнопку Сохранить изменения.
Чтобы задать количество вызовов, одновременно обрабатываемых одним экземпляром функции, выполните команду:
yc serverless function version create \
--function-name=<имя_функции> \
--runtime <среда_выполнения> \
--entrypoint <точка_входа> \
--concurrency 2 \
--execution-timeout 3s \
--source-path <путь_к_ZIP-архиву>
Где:
--function-name— имя функции, версию которой вы хотите создать.--runtime— среда выполнения функции.--entrypoint— точка входа, указывается в формате<имя_файла_без_расширения>.<имя_обработчика>.--concurrency— максимальное количество вызовов, одновременно обрабатываемых одним экземпляром функции.--execution-timeout— максимальное время выполнения функции до таймаута.--source-path— ZIP-архив с кодом функции и необходимыми зависимостями.
Результат:
done (1s)
id: d4evvn8obisa********
function_id: d4elpv8pft63********
created_at: "2020-08-01T19:09:19.531Z"
runtime: nodejs18
entrypoint: index.handler
resources:
memory: "134217728"
execution_timeout: 3s
image_size: "4096"
status: ACTIVE
tags:
- $latest
log_options:
folder_id: b1g681qpemb4********
concurrency: "2"
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы задать количество вызовов, одновременно обрабатываемых одним экземпляром функции, укажите параметр concurrency:
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
yandex_function— описание создаваемой функции и ее исходный код.name— имя функции.user_hash— произвольная строка, определяющая версию функции. При изменениях функции необходимо менять и эту строку. Функция обновится при изменении этой строки.runtime— среда выполнения функции.entrypoint— точка входа, указывается в формате<имя_файла_без_расширения>.<имя_обработчика>.memory— объем памяти в мегабайтах, отведенный для выполнения функции.concurrency— максимальное количество вызовов, одновременно обрабатываемых одним экземпляром функции.execution_timeout— максимальное время выполнения функции до таймаута.service_account_id— идентификатор сервисного аккаунта, от имени которого будет запускаться функция.content— исходный код функции.content.0.zip_filename— имя ZIP-архива, содержащего исходный код функции.
Пример структуры конфигурационного файла:
provider "yandex" { token = "<OAuth-токен_или_статический_ключ_сервисного_аккаунта>" folder_id = "<идентификатор_каталога>" zone = "ru-central1-a" } resource "yandex_function" "test-function" { name = "<имя_функции>" user_hash = "<хеш>" runtime = "<среда_выполнения>" entrypoint = "<точка_входа>" memory = "128" concurrency = "2" execution_timeout = "10" service_account_id = "<идентификатор_сервисного_аккаунта>" content { zip_filename = "<путь_к_ZIP-архиву>" } }Подробнее о параметрах ресурсов см. yandex_function.
-
Проверьте конфигурацию командой:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминал слово
yesи нажмите Enter.
Проверить добавление параметра concurrency можно в консоли управления
yc serverless function version get <идентификатор_версии>
Чтобы задать количество вызовов, одновременно обрабатываемых одним экземпляром функции, создайте версию функции с помощью метода REST API createVersion для ресурса Function или вызова gRPC API FunctionService/CreateVersion. В тело запроса добавьте поле concurrency.