Создание функции на 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: "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-архив с кодом функции
-
Сохраните следующий код в файл с названием
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
. - В разделе Последняя версия нажмите кнопку Создать в редакторе.
- Задайте параметры версии:
- Среда выполнения:
nodejs12
. - Способ: ZIP-архив.
- Файл:
hello-js.zip
. - Точка входа:
hello.handler
. - Таймаут, секунды: 3.
- Память: 128 МБ.
- Сервисный аккаунт: Не выбрано.
- Среда выполнения:
- Нажмите кнопку Создать версию.
Если у вас еще нет интерфейса командной строки 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.
- В консоли управления перейдите в каталог, в котором находится функция.
- Выберите сервис 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/b09bhaokchn9pnbrlseb?name=Username
На странице появится ответ:
Hello, Username!
Вызвать функцию можно с помощью плагина Yandex Cloud Toolkit для семейства IDE на платформе IntelliJ от JetBrains.
Что дальше
- Прочитайте, какой должна быть структура функции для вызова разными способами (HTTP, CLI), в разделе Вызов функции в Cloud Functions.
- Ознакомьтесь с концепциями сервиса.
- Посмотрите, что можно делать с функциями и версиями в пошаговых инструкциях.