Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Cloud Functions
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
    • Обзор
    • Создание функции
      • Обзор
      • Node.js
      • Python
      • Go
      • PHP
      • Bash
      • Java
  • Пошаговые инструкции
    • Все инструкции
    • Получение IAM-токена сервисного аккаунта с помощью функции
    • Подключение к управляемым БД из функции
    • Получение информации о функции
      • Получить список функций
      • Получить список версий функции
      • Получить информацию о функции
      • Получить информацию о версии функции
    • Управление правами доступа к функции
      • Сделать функцию публичной
      • Сделать функцию приватной
      • Посмотреть роли, назначенные на функцию
      • Назначить роли на функцию
      • Отозвать роли, назначенные на функцию
    • Создание функции
      • Создать функцию
      • Создать версию функции
    • Вызов функции
      • Вызвать функцию
      • Аутентифицироваться при вызове приватной функции через HTTPS
    • Управление функцией
      • Изменить функцию
        • Изменить имя
        • Изменить описание
      • Масштабировать функцию
        • Посмотреть настройки масштабирования
        • Добавить настройки масштабирования
        • Удалить настройки масштабирования
      • Добавить переменные окружения
      • Указать облачную сеть
      • Передать секреты Yandex Lockbox
      • Управлять тегами
        • Добавить тег
        • Удалить тег
      • Управлять метками
        • Добавить метку
        • Изменить метку
        • Удалить метку
      • Посмотреть графики мониторинга
      • Управлять логами
        • Посмотреть логи
        • Записать логи
      • Удалить функцию
    • Получение информации о триггере
      • Получить список триггеров
      • Получить информацию о триггере
    • Создание триггера
      • Создать таймер
      • Создать триггер для Message Queue
      • Создать триггер для Object Storage
      • Создать триггер для Container Registry
      • Создать триггер для Cloud Logs
      • Создать триггер для Cloud Logging
      • Создать триггер для Yandex IoT Core
      • Создать триггер для бюджетов
      • Создать триггер для Data Streams
      • Создать триггер для почты
    • Управление триггером
      • Изменить триггер
        • Изменить имя
        • Изменить описание
      • Управлять метками
        • Добавить метку
        • Изменить метку
        • Удалить метку
      • Посмотреть графики мониторинга
      • Удалить триггер
  • Концепции
    • Обзор
    • Функция
    • Вызов функции
    • Сетевое взаимодействие
    • Среда выполнения
      • Обзор
      • Окружение
      • Контекст выполнения
      • Предзагружаемая среда выполнения
    • Сборщик
    • Триггер
      • Обзор
      • Таймер
      • Триггер для Message Queue
      • Триггер для Object Storage
      • Триггер для Container Registry
      • Триггер для Cloud Logs
      • Триггер для Cloud Logging
      • Триггер для Yandex IoT Core
      • Триггер для бюджетов
      • Триггер для Data Streams
      • Триггер для почты
    • Dead Letter Queue
    • Логи функции
    • Резервное копирование
    • Квоты и лимиты
  • Разработка на Node.js
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на Python
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на Go
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на PHP
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
  • Разработка на Bash
    • Обзор
    • Обработчик запросов
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на Java
    • Обзор
    • Модель программирования
      • Обзор
      • Интерфейс Function
      • Интерфейс YcFunction
      • Класс HttpServlet
      • Spring Boot
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на R
    • Обзор
    • Модель программирования
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
  • Разработка на C#
    • Обзор
    • Модель программирования
      • Обзор
      • Интерфейс Function
      • Интерфейс YcFunction
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Практические руководства
    • Все практические руководства
    • Создание навыка Алисы
    • Развертывание веб-приложения
    • Разработка навыка Алисы и сайта с авторизацией
    • Запись данных с устройства в Managed Service for PostgreSQL
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Подключение к базе данных YDB из функции на Python
    • Подключение к базе данных YDB из функции на Node.js
    • Конвертация видео в GIF на Python
    • Создание функции Node.js с помощью TypeScript
    • Разработка пользовательской интеграции
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
  • Правила тарификации
  • Управление доступом
  • Справочник API Functions
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • FunctionService
      • OperationService
    • REST (англ.)
      • Overview
      • Function
        • Overview
        • create
        • createVersion
        • delete
        • get
        • getVersion
        • getVersionByTag
        • list
        • listAccessBindings
        • listOperations
        • listRuntimes
        • listScalingPolicies
        • listTagHistory
        • listVersions
        • removeScalingPolicy
        • removeTag
        • setAccessBindings
        • setScalingPolicy
        • setTag
        • update
        • updateAccessBindings
  • Справочник API Triggers
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • TriggerService
      • OperationService
    • REST (англ.)
      • Overview
      • Trigger
        • Overview
        • create
        • delete
        • get
        • list
        • listOperations
        • pause
        • resume
        • update
  • Вопросы и ответы
  1. Начало работы
  2. Создание функции
  3. Node.js

Создание функции на Node.js

Статья создана
Yandex Cloud
,
улучшена
Dmitry A.
  • Перед началом работы
  • Создайте функцию
  • Создайте первую версию функции
    • Подготовьте ZIP-архив с кодом функции
    • Создайте версию функции
  • Вызовите функцию
  • Что дальше

Создайте и выполните функцию на Node.js, которая приветствует пользователя.

Перед началом работы

Создайте каталог в Yandex Cloud.

Создайте функцию

Консоль управления
CLI
API
Yandex Cloud Toolkit
  1. В консоли управления перейдите в каталог, в котором хотите создать функцию.
  2. Выберите сервис Cloud Functions
  3. Нажмите кнопку Создать функцию.
  4. Введите имя функции — nodejs-function.
  5. Нажмите кнопку Создать.

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

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

yc serverless function create --name=nodejs-function

Результат:

id: b09bhaokchn9********
folder_id: aoek49ghmknn********
created_at: "2019-06-14T10:03:37.475Z"
name: nodejs-function
log_group_id: eolm8aoq9vcp********
http_invoke_url: https://functions.yandexcloud.net/b09bhaokchn9********
status: ACTIVE

Создать функцию можно с помощью метода API create.

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

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

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

Важно

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

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

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

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

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

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

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

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

yc serverless function version create \
  --function-name=nodejs-function \
  --runtime nodejs12 \
  --entrypoint hello.handler \
  --memory 128m \
  --execution-timeout 3s \
  --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: nodejs12
entrypoint: hello.handler
resources:
    memory: "134217728"
execution_timeout: 3s
image_size: "4096"
status: ACTIVE
tags:
- $latest
log_group_id: ckg3qh8h363p********

Создать версию функции можно с помощью метода API createVersion.

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

Вызовите функцию

Примечание

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

Консоль управления
CLI
HTTPS
Yandex Cloud Toolkit
  1. В консоли управления перейдите в каталог, в котором находится функция.
  2. Выберите сервис Cloud Functions.
  3. Выберите функцию.
  4. Перейдите на вкладку Тестирование.
  5. В поле Тег версии укажите $latest, чтобы вызвать последнюю версию функции.
  6. В поле Шаблон данных выберите Без шаблона.
  7. В поле Входные данные введите:
    {"queryStringParameters": {"name": "Username"}}
    
  8. Нажмите кнопку Запустить тест.
  9. В разделе Результат тестирования, в поле Состояние функции, будет показан статус тестирования. Важно: максимальное время выполнения функции до таймаута (включая начальную инициализацию при первом запуске) — 10 минут.
  10. В поле Ответ функции появится результат выполнения функции:
    {
    	"statusCode": 200,
    	"headers": {
    		"Content-Type": "text/plain"
    	},
    	"isBase64Encoded": false,
    	"body": "Hello, Username!"
    }
    

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

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

yc serverless function invoke <идентификатор функции> -d '{"queryStringParameters": {"name": "Username"}}'

Результат:

{"statusCode":200,"headers":{"Content-Type":"text/plain"},"isBase64Encoded":false,"body":"Hello, Username!"}

По умолчанию вызывается версия функции с тегом $latest.

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

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

https://functions.yandexcloud.net/b09bhaokchn9pnbrlseb?name=Username

На странице появится ответ:

Hello, Username!

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

Что дальше

  • Прочитайте, какой должна быть структура функции для вызова разными способами (HTTP, CLI), в разделе Вызов функции в Cloud Functions.
  • Ознакомьтесь с концепциями сервиса.
  • Посмотрите, что можно делать с функциями и версиями в пошаговых инструкциях.

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Перед началом работы
  • Создайте функцию
  • Создайте первую версию функции
  • Подготовьте ZIP-архив с кодом функции
  • Создайте версию функции
  • Вызовите функцию
  • Что дальше