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

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

  • Подготовить ZIP-архив с кодом функции
  • Создать версию функции
  1. Пошаговые инструкции
  2. Создание функции
  3. Создать версию функции

Создать версию функции

Статья создана
Yandex Cloud
Улучшена
Обновлена 21 апреля 2025 г.
  • Подготовить ZIP-архив с кодом функции
  • Создать версию функции

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

Важно

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

Подготовить ZIP-архив с кодом функцииПодготовить ZIP-архив с кодом функции

  1. Сохраните следующий код в файл с названием index.js:

    exports.handler = async function (event, context) {
        let name = 'World';
        if (event.queryStringParameters && event.queryStringParameters.name) {
            name = event.queryStringParameters.name
        }
        return {
            'statusCode': 200,
            'headers': {
                'Content-Type': 'text/plain'
            },
            'isBase64Encoded': false,
            'body': `Hello, ${name}!`
        }
    };
    
  2. Добавьте файл index.js в ZIP-архив hello-js.zip.

    Примечание

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

    zip -d <имя_архива>.zip "__MACOSX/*"
    

Создать версию функцииСоздать версию функции

При создании версии необходимо задать следующие параметры:

  • Среда выполнения — предоставляет дополнительные библиотеки и переменные окружения, к которым можно получить доступ из кода функции. Соответствует языку программирования, на котором написана ваша функция. Подробнее см. в разделе Среда выполнения.
  • Точка входа — функция, которая будет вызываться в качестве обработчика.
  • Таймаут — максимальное время выполнения функции, после которого сервис прервет выполнение, не дожидаясь ответа. Включает в себя время начальной инициализации при первом запуске.
Консоль управления
CLI
Terraform
API
Yandex Cloud Toolkit
  1. В консоли управления перейдите в каталог, в котором находится функция.
  2. Выберите сервис Cloud Functions.
  3. Выберите функцию, версию которой хотите создать.
  4. В разделе Последняя версия нажмите кнопку Создать в редакторе.
  5. Выберите среду выполнения. Отключите опцию Добавить файлы с примерами кода.
  6. Нажмите кнопку Продолжить.
  7. Подготовьте код функции:
    • Среда выполнения: nodejs18.
    • Способ: ZIP-архив.
    • Файл: hello-js.zip.
    • Точка входа: index.handler.
  8. Задайте параметры версии:
    • Таймаут: 5.
    • Память: 128 МБ.
    • Сервисный аккаунт: Не выбрано.
    • Переменные окружения: Не выбрано.
  9. Нажмите кнопку Сохранить изменения.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы создать версию функции, выполните команду:

yc serverless function version create \
  --function-name=my-nodejs-function \
  --runtime nodejs18 \
  --entrypoint index.handler \
  --memory 128m \
  --execution-timeout 5s \
  --source-path ./hello-js.zip

Где:

  • --function-name — имя функции, версию которой вы хотите создать.
  • --runtime — среда выполнения.
  • --entrypoint — точка входа, указывается в формате <имя_файла_без_расширения>.<имя_обработчика>.
  • --memory — объем RAM.
  • --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: 5s
image_size: "4096"
status: ACTIVE
tags:
  - $latest
log_options:
  folder_id: b1g681qpemb4********

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

Чтобы создать новую версию функции:

  1. Откройте файл конфигурации Terraform и измените параметры функции:

    • yandex_function — описание создаваемой функции и ее исходный код.
      • name — имя функции.
      • description — текстовое описание функции.
      • user_hash — произвольная строка, определяющая версию функции. При изменениях функции необходимо менять и эту строку. Функция обновится при изменении этой строки.
      • runtime — среда выполнения функции.
      • entrypoint — имя функции в исходном коде, которая будет служить точкой входа в приложения.
      • memory — объем памяти в мегабайтах, отведенный для выполнения функции.
      • execution_timeout — таймаут выполнения функции.
      • service_account_id — идентификатор сервисного аккаунта, от имени которого будет запускаться функция.
      • content — исходный код функции.
        • content.0.zip_filename — имя ZIP-архива, содержащего исходный код функции.

    Пример структуры конфигурационного файла:

    resource "yandex_function" "test-function" {
        name               = "test-function"
        description        = "Test function"
        user_hash          = "first-function"
        runtime            = "nodejs18"
        entrypoint         = "main"
        memory             = "128"
        execution_timeout  = "10"
        service_account_id = "<идентификатор_сервисного_аккаунта>"
        content {
            zip_filename = "<путь_к_ZIP-архиву>"
        }
    }
    

    Примечание

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

    Более подробную информацию о параметрах ресурса yandex_function см. в документации провайдера.

  2. Проверьте конфигурацию командой:

    terraform validate
    

    Если конфигурация является корректной, появится сообщение:

    Success! The configuration is valid.
    
  3. Выполните команду:

    terraform plan
    

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

  4. Примените изменения конфигурации:

    terraform apply
    
  5. Подтвердите изменения: введите в терминал слово yes и нажмите Enter.

Проверить появление версии можно в консоли управления или с помощью команды CLI:

yc serverless function version list --function-name <имя_функции>

Чтобы создать версию функции, воспользуйтесь методом REST API createVersion для ресурса Function или вызовом gRPC API FunctionService/CreateVersion.

Пример запроса

Чтобы воспользоваться примерами, установите cURL и аутентифицируйтесь в API.

  1. Загрузите в бакет Object Storage ZIP-архив с кодом версии функции hello-js.zip.

  2. Подготовьте файл body.json с телом запроса:

    {
      "functionId": "<идентификатор_функции>",
      "runtime": "nodejs18",
      "entrypoint": "index.handler",
      "resources": {
        "memory": "134217728"
      },
      "executionTimeout": "5s",
      "serviceAccountId": "<идентификатор_сервисного_аккаунта>",
      "package": {
        "bucketName": "<имя_бакета>",
        "objectName": "hello-js.zip"
      },
    }
    

    Где:

    • functionId — идентификатор функции, версию которой вы хотите создать.
    • runtime — среда выполнения.
    • entrypoint — точка входа, указывается в формате <имя_файла_без_расширения>.<имя_обработчика>.
    • memory — объем RAM.
    • executionTimeout — максимальное время выполнения функции до таймаута.
    • serviceAccountId — идентификатор сервисного аккаунта, которому назначена роль, разрешающая чтение данных в бакете.
    • bucketName — имя бакета, в который вы загрузили ZIP-архив c кодом функции и необходимыми зависимостями.
    • objectName — ключ объекта с кодом функции в бакете.
  3. Выполните запрос:

    export IAM_TOKEN=<IAM-токен>
    curl \
        --request POST \
        --header "Authorization: Bearer ${IAM_TOKEN}" \
        --data "@<путь_к_файлу_body.json>" \
        https://serverless-functions.api.cloud.yandex.net/functions/v1/versions
    

    Результат:

    {
     "done": false,
     "metadata": {
      "@type": "type.googleapis.com/yandex.cloud.serverless.functions.v1.CreateFunctionVersionMetadata",
      "functionVersionId": "d4e25m0gila4********"
     },
     "id": "d4edk0oobcc9********",
     "description": "Create function version",
     "createdAt": "2023-10-11T11:22:21.286786431Z",
     "createdBy": "ajeol2afu1js********",
     "modifiedAt": "2023-10-11T11:22:21.286786431Z"
    }
    

Создать версию функции можно с помощью плагина Yandex Cloud Toolkit для семейства IDE на платформе IntelliJ от JetBrains.

Примечание

Для сохранения целостности связей изменение версий функции не предусмотрено. Подробнее о взаимосвязи ресурсов читайте в разделе Функция.

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

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