Создание функции на Node.js
Создайте и выполните функцию на Node.js, которая приветствует пользователя.
Перед началом работы
Создайте каталог в Yandex Cloud.
Создайте функцию
- В консоли управления
перейдите в каталог, в котором хотите создать функцию. - Выберите сервис Cloud Functions.
- Нажмите кнопку Создать функцию.
- Введите имя функции —
nodejs-function
. - Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать функцию, выполните команду:
yc serverless function create --name=nodejs-function
Результат:
id: b09bhaokchn9********
folder_id: aoek49ghmknn********
created_at: "2023-08-16T19:01:37.475Z"
name: nodejs-function
log_group_id: eolm8aoq9vcp********
http_invoke_url: https://functions.yandexcloud.net/b09bhaokchn9********
status: ACTIVE
Создать функцию можно с помощью метода API create.
Создать функцию можно с помощью плагина Yandex Cloud Toolkit
Создайте первую версию функции
Чтобы создать версию функции, вы можете воспользоваться одним из форматов загрузки кода. Для примера будет использован ZIP-архив.
Важно
Файл больше 3,5 МБ необходимо загружать через Object Storage. Подробнее об ограничениях читайте в разделе Квоты и лимиты в Cloud Functions.
Подготовьте ZIP-архив с кодом функции
-
Сохраните следующий код в файл с названием
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}!` } };
-
Добавьте файл
hello.js
в ZIP-архивhello-js.zip
.
Создайте версию функции
- В консоли управления
перейдите в каталог, в котором находится функция. - Выберите сервис Cloud Functions.
- Выберите функцию
nodejs-function
. - В разделе Последняя версия нажмите кнопку Создать в редакторе.
- Выберите среду выполнения
nodejs16
и нажмите кнопку Продолжить. - Задайте параметры версии:
- Способ —
ZIP-архив
. - Файл — прикрепите файл
hello-js.zip
. - Точка входа —
hello.handler
. - Таймаут, c —
3
. - Память —
128 МБ
. - Сервисный аккаунт —
Не выбрано
.
- Способ —
- Нажмите кнопку Сохранить изменения.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать версию функции, выполните команду:
yc serverless function version create \
--function-name=nodejs-function \
--runtime nodejs16 \
--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: "2023-08-16T19:09:19.531Z"
runtime: nodejs16
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
Вызовите функцию
Примечание
Чтобы любой пользователь мог вызывать функцию, необходимо сделать ее публичной. Подробнее о правах читайте в разделе Управление доступом в Cloud Functions.
- В консоли управления
перейдите в каталог, в котором находится функция. - Выберите сервис Cloud Functions.
- Выберите функцию.
- Перейдите на вкладку Тестирование.
- В поле Тег версии укажите
$latest
, чтобы вызвать последнюю версию функции. - В поле Шаблон данных выберите
Без шаблона
. - В поле Входные данные введите:
{"queryStringParameters": {"name": "Username"}}
- Нажмите кнопку Запустить тест.
- В разделе Результат тестирования, в поле Состояние функции, будет показан статус тестирования. Важно: максимальное время выполнения функции до таймаута (включая начальную инициализацию при первом запуске) — 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/<идентификатор_функции>?name=Username
На странице появится ответ:
Hello, Username!
Вызвать функцию можно с помощью плагина Yandex Cloud Toolkit
Что дальше
- Прочитайте, какой должна быть структура функции для вызова разными способами (HTTP, CLI), в разделе Вызов функции в Cloud Functions.
- Ознакомьтесь с концепциями сервиса.
- Посмотрите, что можно делать с функциями и версиями в пошаговых инструкциях.