Создание функции на Go
Создайте и выполните функцию на Go, которая приветствует пользователя.
Перед началом работы
Создайте каталог в Yandex Cloud.
Создайте функцию
- В консоли управления
перейдите в каталог, в котором хотите создать функцию. - Выберите сервис Cloud Functions.
- Нажмите кнопку Создать функцию.
- Введите имя функции —
go-function
. - Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать функцию, выполните команду:
yc serverless function create --name=go-function
Результат:
id: b09bhaokchn9********
folder_id: aoek49ghmknnp********
created_at: "2023-08-16T19:01:37.475Z"
name: go-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.go
:package main import ( "encoding/json" ) type JSONString string func (j JSONString) MarshalJSON() ([]byte, error) { return []byte(j), nil } func Handler() ([]byte, error) { s := `{"body": "Hello, World!"}` return json.Marshal(JSONString(s)) }
-
Добавьте файл
hello.go
в ZIP-архивhello-go.zip
.
Создайте версию функции
- В консоли управления
перейдите в каталог, в котором находится функция. - Выберите сервис Cloud Functions.
- Выберите функцию
go-function
. - В разделе Последняя версия нажмите кнопку Создать в редакторе.
- Выберите среду выполнения
golang119
и нажмите кнопку Продолжить. - Задайте параметры версии:
- Способ —
ZIP-архив
. - Файл — прикрепите файл
hello-go.zip
. - Точка входа —
hello.Handler
. - Таймаут, c —
3
. - Память —
128 МБ
. - Сервисный аккаунт —
Не выбрано
.
- Способ —
- Нажмите кнопку Сохранить изменения.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать версию функции, выполните команду:
yc serverless function version create \
--function-name=go-function \
--runtime golang119 \
--entrypoint hello.Handler \
--memory 128m \
--execution-timeout 3s \
--source-path ./hello-go.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: golang119
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
, чтобы вызвать последнюю версию функции. - В поле Шаблон данных выберите
Без шаблона
. - Нажмите кнопку Запустить тест.
- В разделе Результат тестирования, в поле Состояние функции, будет показан статус тестирования. Важно: максимальное время выполнения функции до таймаута (включая начальную инициализацию при первом запуске) — 10 минут.
- В поле Ответ функции появится результат выполнения функции.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы вызвать функцию, выполните команду:
yc serverless function invoke <идентификатор_функции>
По умолчанию вызывается версия функции с тегом $latest
.
Ссылку для вызова функции можно найти на вкладке Обзор, в поле Ссылка для вызова.
Для обеспечения безопасности функцию можно вызвать только по протоколу HTTPS. Вызовите ее как обычный HTTPS-запрос, вставив ссылку в адресную строку браузера:
https://functions.yandexcloud.net/<идентификатор_функции>
На странице появится ответ:
Hello, World!
Вызвать функцию можно с помощью плагина Yandex Cloud Toolkit
Что дальше
- Прочитайте, какой должна быть структура функции для вызова разными способами (HTTP, CLI), в разделе Вызов функции в Cloud Functions.
- Ознакомьтесь с концепциями сервиса.
- Посмотрите, что можно делать с функциями и версиями в пошаговых инструкциях.