Создание навыка Алисы с помощью Terraform
Важно
Часть ресурсов, необходимых для прохождения практического руководства, доступны только в регионе Россия.
Чтобы создать навык Алисы с помощью Terraform:
- Подготовьте облако к работе.
- Подготовьте код навыка.
- Создайте инфраструктуру.
- Добавьте ссылку на функцию в навык Алисы.
- Протестируйте работу навыка.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Подготовьте код для навыка Алисы
Для создания версии функции вы можете воспользоваться одним из форматов загрузки кода. Для примера код будет загружен в формате ZIP-архива.
- Скачайте из репозитория на GitHub файл с примером: parrot.py
. - Создайте ZIP-архив
parrot-py.zipс файломparrot.py.
- Скачайте из репозитория на GitHub файл с примером: index.js
. - Создайте ZIP-архив
parrot-js.zipс файломindex.js.
Версия содержит код функции, параметры запуска, а также все необходимые зависимости. На разных стадиях процесса разработки вы можете работать с разными версиями одной функции. Подробнее читайте в разделе Версия функции.
Загружать код версии функции можно несколькими способами: в редакторе в консоли управления, из локальных файлов и директорий или в виде архива. Подробнее читайте в разделе Формат загрузки кода.
Создайте инфраструктуру
Terraform
Terraform распространяется под лицензией Business Source License
Подробная информация о ресурсах провайдера в документации на сайте Terraform
Чтобы создать инфраструктуру с помощью Terraform:
-
Установите Terraform, получите данные для аутентификации и укажите источник для установки провайдера Yandex Cloud (раздел Настройте провайдер, шаг 1).
-
Подготовьте файл с описанием инфраструктуры:
Готовая конфигурацияВручную-
Склонируйте репозиторий с конфигурационными файлами:
git clone https://github.com/yandex-cloud-examples/yc-serverless-alice-skill -
Перейдите в директорию с репозиторием. В ней должны появиться файлы:
alice-skill.tf— конфигурация создаваемой инфраструктуры.alice-skill.auto.tfvars— пользовательские данные.
-
Создайте папку для файла с описанием инфраструктуры.
-
Создайте в папке конфигурационный файл
alice-skill.tf:alice-skill.tf
# Объявление переменных variable "folder_id" { type = string } variable "file_path" { type = string } variable "language" { type = string } # Настройка провайдера terraform { required_providers { yandex = { source = "yandex-cloud/yandex" } } required_version = ">= 0.13" } provider "yandex" { folder_id = var.folder_id } # Создание функции и версии функции resource "yandex_function" "alice_parrot" { name = "alice-parrot" description = "Yandex Alice skill: Parrot (repeats user input)" runtime = var.language == "python" ? "python314" : "nodejs22" entrypoint = var.language == "python" ? "parrot.handler" : "index.handler" memory = 128 execution_timeout = 2 content { zip_filename = var.file_path } user_hash = filesha256(var.file_path) } -
Создайте в папке файл с пользовательскими данными
alice-skill.auto.tfvars:alice-skill.auto.tfvars
folder_id = "<идентификатор_каталога>" file_path = "<локальный_путь_к_архиву_с_кодом_функции>" language = "<язык_программирования>"
Подробнее о параметрах используемых ресурсов в Terraform читайте в документации провайдера.
-
-
В файле
alice-skill.auto.tfvarsзадайте пользовательские параметры:-
folder_id— идентификатор каталога. -
file_path— локальный путь к файлу с архивом, содержащим код функции. Например:/Users/myuser/Temp/parrot-py.zip. -
language— в зависимости от используемого в коде функции языка программирования укажите:python— если вы используете пример наPython;nodejs— если вы используете пример наNode.js.
-
-
Создайте ресурсы:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-
Добавьте ссылку на функцию в навык Алисы
-
Перейдите на страницу навыка Алисы в личном кабинете
. -
Нажмите
Создать навык Алисы и в открывшемся окне:-
В поле Название навыка задайте уникальное имя создаваемого навыка.
-
В поле Backend выберите вариант Функция в Яндекс Облаке. В выпадающем списке выберите созданную ранее функцию.
Важно
В списке отображаются функции, которые вы имеете право просматривать. Чтобы прикрепить функцию к навыку, вам необходимо разрешение на запуск функции. Это разрешение входит в роль functions.functionInvoker и выше.
-
Настройки остальных параметров оставьте без изменений и вверху страницы нажмите кнопку Сохранить.
-
Роль functions.functionInvoker позволяет вызывать функции. Подробнее об управлении доступом в Yandex Cloud читайте в разделе Как устроено управление доступом в Yandex Cloud.
Протестируйте работу навыка
- В личном кабинете
Яндекс Диалогов на странице с созданным ранее навыком в меню слева выберите Тестирование. - Если все настроено правильно, в блоке Чат вы увидите сообщение с приглашением начать беседу:
Hello! I'll repeat anything you say to me. - Отправьте сообщение с любым текстом и убедитесь, что вам пришел ответ с таким же содержанием.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
-
Откройте конфигурационный файл
alice-skill.tfи удалите описание создаваемой инфраструктуры из файла. -
Примените изменения:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-