Yandex Cloud
Поиск
Связаться с намиПопробовать бесплатно
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Cloud Functions
  • Сопоставление с другими сервисами Yandex Cloud
    • Обзор
    • Функция
    • Вызов функции
    • Асинхронный вызов функции
    • Долгоживущие функции
    • Уведомления о завершении выполнения функции
    • Сетевое взаимодействие
    • Монтирование внешних ресурсов на файловую систему функции
    • Сборщик
    • Dead Letter Queue
    • Логи функции
    • Резервное копирование
    • Квоты и лимиты
  • Инструменты
  • Правила тарификации
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Версия функции
  • Формат загрузки кода
  • Тег версии
  • Экземпляр функции
  • Создание экземпляра
  • Работа экземпляра
  • Приостановка экземпляра
  • Завершение экземпляра
  • Модель программирования
  • Описание модели
  • Масштабирование функции
  • Примеры использования
  1. Концепции
  2. Функция

Функция

Статья создана
Yandex Cloud
Обновлена 23 декабря 2025 г.
  • Версия функции
    • Формат загрузки кода
    • Тег версии
  • Экземпляр функции
    • Создание экземпляра
    • Работа экземпляра
    • Приостановка экземпляра
    • Завершение экземпляра
  • Модель программирования
    • Описание модели
    • Масштабирование функции
  • Примеры использования

Функция позволяет вам размещать код в Yandex Cloud, который можно запускать по запросу или триггеру.

Возможные статусы функции:

  • Creating — функция создана, идут фоновые процессы по ее инициализации.
  • Active — функция успешно создана и готова к использованию.
  • Deleting — функция и все связанные с ней ресурсы удаляются. Функция еще существует, но уже недоступна для использования.
  • Error — произошла ошибка при создании функции. Функция существует, но не может быть использована.

Сразу после создания функция содержит только метаинформацию о себе: имя, описание, уникальный идентификатор и т. д. Для начала работы с функцией необходимо создать версию функции. Выполнить функцию можно с помощью HTTPS API или CLI.

Перед написанием функции, ознакомьтесь с моделью программирования.

Версия функцииВерсия функции

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

Возможные статусы версии функции:

  • Creating — версия функции создана, идут фоновые процессы по ее инициализации.
  • Active — версия функции успешно создана и готова к использованию.
  • Obsolete — версия функции устарела и скоро будет удалена из-за длительного отсутствия тегов. Чтобы вернуть ее в статус Active, нужно добавить тег.
  • Deleting — версия функции удаляется. Она еще существует, но уже недоступна для использования.

Формат загрузки кодаФормат загрузки кода

Для создания версии вы можете воспользоваться редактором кода или загрузить код и необходимые зависимости, используя один из форматов, описанных в таблице ниже. После создания функции объект с кодом больше не нужен. Его можно удалить из хранилища.

Формат Консоль управления Yandex Cloud CLI
ZIP-архив с вашего ПК
ZIP-архив из S3 с указанием бакета и объекта
Директория
Файл

Важно

Файл больше 3,5 МБ необходимо загружать через Object Storage. Подробнее об ограничениях читайте в разделе Квоты и лимиты в Cloud Functions.

Подробнее о том, как создать версию, читайте в разделе Создать версию функции.

Тег версииТег версии

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

Примечание

При создании новой версии ей присваивается тег по умолчанию — $latest. Тег $latest нельзя удалить.

Экземпляр функцииЭкземпляр функции

Экземпляр функции — это виртуальная машина, на которой:

  • загружена операционная система;
  • запущен bootstrap-процесс;
  • проинициализированы компоненты среды выполнения Cloud Functions;
  • загружен и проинициализирован код функции Cloud Functions.

Cloud Functions динамически управляет жизненным циклом виртуальных машин на основе внутренних правил. Эти правила могут меняться в связи с развитием сервиса.

Создание экземпляраСоздание экземпляра

При вызове функции происходит одно из двух событий:

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

Принимая решение о запуске нового экземпляра, Cloud Functions учитывает:

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

Процесс запуска экземпляраПроцесс запуска экземпляра

  1. Cloud Functions выбирает узел сервисного кластера, учитывая наличие ресурсов (CPU, RAM, сеть), загруженных образов пользовательского кода и другие характеристики, влияющие на длительность запуска экземпляра. Приоритет отдается узлу, который обеспечит минимальную длительность запуска. При этом время запуска может варьироваться: например, оно будет меньше, если узел закешировал пользовательский код с предыдущего вызова.
  2. На выбранном узле кластера запускается виртуальная машина, для которой настраиваются сетевые интерфейсы, выделяются ресурсы CPU и RAM, подключаются образы дисков, содержащие операционную систему, среду выполнения и пользовательский код.
  3. Виртуальная машина запускает ядро Linux и стартовый процесс bootstrap.
  4. После инициализации bootstrap-процесс запускает среду выполнения, которая указана в настройках вызываемой функции.

Работа экземпляраРабота экземпляра

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

Приостановка экземпляраПриостановка экземпляра

Если в течение некоторого времени в созданный экземпляр не поступают новые вызовы, он приостанавливается. Операционная система и запущенные процессы остаются в оперативной памяти, но не обрабатываются процессором. Экземпляр возобновляет работу в следующих случаях:

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

Примечание

Когда экземпляр приостановлен, он не потребляет ресурсы CPU, поэтому сетевые соединения могут быть разорваны. Пользовательский код должен корректно обрабатывать такие случаи.

Завершение экземпляраЗавершение экземпляра

Cloud Functions принимает решение о завершении запущенного экземпляра на основе набора факторов, например:

  • длительное время отсутствуют новые вызовы;
  • произошел таймаут выполнения функции;
  • произошла ошибка выполнения, которую нельзя исправить.

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

Модель программированияМодель программирования

Cloud Functions поддерживает разные языки программирования. Вне зависимости от выбранного вами языка, при написании кода необходимо опираться на принятую в сервисе модель программирования. В ней есть как элементы, которые необходимо реализовать пользователю, так и механизмы, которые уже реализованы на стороне сервиса и могут быть использованы по необходимости.

Описание моделиОписание модели

Чтобы функция запустилась, опишите в ней обработчик. Он определяется при написании кода и обрабатывает поступающие данные, вызывая необходимые функции и методы в коде. Обработчик должен принимать данные, которые приходят с запросами функции, и контекст, который передает Cloud Functions. Для некоторых сред выполнения есть требования к абсолютному пути к файлу, в котором находится обработчик:

  • Python, Go, Java — не должен содержать символ . в названии файла до расширения, например .handler.py.
  • .NET Core — не должен содержать символ . в названии файла до расширения и начале названия директории, в которой находится файл с обработчиком, например .handler.cs или .test/handler.cs.

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

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

Чтобы сообщить сервису об ошибке при выполнении функции, обрабатывайте ошибки с помощью исключений.

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

Масштабирование функцииМасштабирование функции

Экземпляр функции обрабатывает один ее вызов в один момент времени. Если функция вызывается быстрее, чем экземпляр успевает обработать запрос, сервис масштабирует функцию — запускает ее дополнительные экземпляры. Таким образом обеспечивается параллельная обработка запросов.

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

Кроме этого, в Cloud Functions можно задать:

  • zone_instances_limit — количество экземпляров функции в зоне доступности;
  • zone_requests_limit — количество одновременно выполняемых вызовов функции в зоне доступности;
  • provisioned_instances_count — количество подготовленных экземпляров;
  • concurrency — максимальное количество вызовов, одновременно обрабатываемых одним экземпляром функции. Доступно не для всех сред выполнения. Подробнее см. Одновременные вызовы экземпляра функции.

Примечание

Вызовы распределяются по зонам доступности случайным образом. Cloud Functions не гарантирует равномерное распределение вызовов по зонам. Например, все вызовы вне зависимости от их количества могут попасть в одну зону.

Настройки масштабирования применяются в течение 5 минут после их задания.

Одновременные вызовы экземпляра функцииОдновременные вызовы экземпляра функции

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

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

Параметр concurrency доступен для функций со следующими средами выполнения:

  • Node.js
  • Go
  • Java
  • Bash
  • Kotlin

ЛимитыЛимиты

Когда количество экземпляров функции достигает значения zone_instances_limit, Cloud Functions перестает ее масштабировать. Если вызовов функции больше, чем могут обработать экземпляры, вызов становится в очередь, но при этом считается выполняемым. Когда количество выполняемых вызовов достигает значения zone_requests_limit, сервис перестает ставить вызовы в очередь и возвращает ошибку 429 TooManyRequests.

Подготовленные экземплярыПодготовленные экземпляры

Подготовленный экземпляр — это экземпляр функции, при запуске которого гарантированно нет холодного старта. В подготовленном экземпляре до вызова функции:

  • запускается интерпретатор;
  • инициализируются компоненты среды выполнения Cloud Functions;
  • загружается и инициализируется пользовательский код.

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

Время простоя подготовленных экземпляров и выполнения в них функции тарифицируется отдельно.

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

Подготовленные экземпляры расходуют следующие квоты, даже если не запущены:

  • Количество экземпляров функций в каждой зоне доступности.
  • Суммарный объем RAM для всех запущенных функций в каждой зоне доступности.
  • Количество подготовленных экземпляров функций в одном облаке.

Примеры использованияПримеры использования

  • Разработка пользовательской интеграции в API Gateway
  • Запуск вычислений в Yandex DataSphere с помощью API
  • Канареечный релиз функции Cloud Functions
  • Передача событий Yandex Cloud Postbox в Yandex Data Streams и их анализ с помощью Yandex DataLens
  • Разработка функций в Functions Framework и их развертывание в Yandex Serverless Containers
  • Мониторинг показаний датчиков и уведомления о событиях
  • Развертывание отказоустойчивой архитектуры с прерываемыми виртуальными машинами

См. такжеСм. также

  • Создать версию функции
  • Добавить настройки масштабирования

Была ли статья полезна?

Предыдущая
Обзор
Следующая
Вызов функции
Проект Яндекса
© 2025 ООО «Яндекс.Облако»