Создание функции на Bash
Создайте и выполните функцию на Bash, которая приветствует пользователя.
Перед началом работы
Создайте каталог в Яндекс.Облаке.
Создайте функцию
- В консоли управления перейдите в каталог, в котором хотите создать функцию.
- Откройте сервис Cloud Functions
- Нажмите кнопку Создать функцию.
- Введите имя функции —
bash-function
. - Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать функцию, выполните команду:
yc serverless function create --name=bash-function
Результат:
id: b09bhaokchn9pnbrlseb
folder_id: aoek49ghmknnpj1ll45e
created_at: "2019-06-14T10:03:37.475Z"
name: bash-function
log_group_id: eolm8aoq9vcppsieej6h
http_invoke_url: https://functions.yandexcloud.net/b09bhaokchn9pnbrlseb
status: ACTIVE
Создать версию функции можно с помощью метода API create.
Создайте первую версию функции
Для создания версии функции вы можете воспользоваться одним из форматов загрузки кода. Для примера будет использован ZIP-архив.
Важно
Файл больше 3,5 МБ необходимо загружать через Object Storage. Подробнее об ограничениях читайте в разделе Квоты и лимиты.
Подготовьте ZIP-архив с кодом функции
-
Сохраните следующий код в файл с названием
hello.sh
:#!/bin/bash RESPONSE=$(echo '{"statusCode":200, "body":"Hello, World!"}' | jq '.') echo $RESPONSE | jq -c '.body |= tostring'
-
Добавьте файл
hello.sh
в ZIP-архивhello-sh.zip
.
Создайте версию функции
- В консоли управления перейдите в каталог, в котором находится функция.
- Выберите сервис Cloud Functions.
- Выберите функцию
bash-function
. - В разделе Последняя версия нажмите кнопку Создать в редакторе.
- Задайте параметры версии:
- Среда выполнения:
bash
. - Способ: ZIP-архив.
- Файл:
hello-sh.zip
. - Точка входа:
hello.sh
. - Таймаут, секунды: 3.
- Память: 128 МБ.
- Сервисный аккаунт: Не выбрано.
- Среда выполнения:
- Нажмите кнопку Создать версию.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать версию функции, выполните команду:
yc serverless function version create \
--function-name=bash-function \
--runtime bash \
--entrypoint hello.sh \
--memory 128m \
--execution-timeout 3s \
--source-path ./hello-sh.zip
где:
--function-name
— имя функции, версию которой вы хотите создать.--runtime
— среда выполенения.--entrypoint
— точка входа, указывается в формате <имя файла с функцией>.<имя обработчика>.--memory
— объем RAM.--execution-timeout
— максимальное время выполнения функции до таймаута.--source-path
— ZIP-архив c кодом функции и необходимыми зависимостями.
Результат:
done (1s)
id: d4evvn8obisajd51plaq
function_id: d4elpv8pft639ku7k0u6
created_at: "2020-08-01T19:09:19.531Z"
runtime: bash
entrypoint: hello.sh
resources:
memory: "134217728"
execution_timeout: 3s
image_size: "4096"
status: ACTIVE
tags:
- $latest
log_group_id: ckg3qh8h363p40gmr9gn
Создать версию функции можно с помощью метода API createVersion.
Вызовите функцию
Примечание
Чтобы любой пользователь мог вызывать функцию, необходимо сделать ее публичной. Подробнее о правах читайте в разделе Управление доступом.
- В консоли управления перейдите в каталог, в котором находится функция.
- Выберите сервис Cloud Functions.
- Выберите функцию.
- Перейдите на вкладку Тестирование.
- В поле Тег версии укажите
$latest
, чтобы вызвать последнюю версию функции. - В поле Шаблон данных выберите Без шаблона.
- Нажмите кнопку Запустить тест.
- В разделе Результат тестирования, в поле Состояние функции, будет показан статус тестирования. Важно: максимальное время выполнения функции до таймаута (включая начальную инициализацию при первом запуске) — 10 минут.
- В поле Ответ функции появится результат выполнения функции.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы вызвать функцию, выполните команду:
yc serverless function invoke <идентификатор функции>
По умолчанию вызывается версия функции с тегом $latest
.
Ссылку для вызова функции можно найти на вкладке Обзор, в поле Ссылка для вызова.
Для обеспечения безопасности функцию можно вызвать только по протоколу HTTPS. Вызовите ее как обычный HTTPS-запрос, вставив ссылку в адресную строку браузера:
https://functions.yandexcloud.net/b09bhaokchn9pnbrlseb
На странице появится ответ:
Hello, World!
Что дальше
- Прочитайте, какой должна быть структура функции для вызова разными способами (HTTP, CLI), в разделе Вызов функции.
- Ознакомьтесь с концепциями сервиса.
- Посмотрите, что можно делать с функциями и версиями в пошаговых инструкциях.