Начало работы с Workflows
Статья создана
Обновлена 3 декабря 2024 г.
Примечание
Workflows находится на стадии Preview. Чтобы получить доступ, отправьте заявку
С помощью этой инструкции вы создадите рабочий процесс и запустите его. Во время выполнения рабочего процесса будут вызываться функции Yandex Cloud Functions.
Перед началом работы
Чтобы начать работать в Yandex Cloud:
- Войдите в консоль управления
. Если вы еще не зарегистрированы, перейдите в консоль управления и следуйте инструкциям. - На странице Биллинг
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его. - Если у вас еще нет каталога, создайте его.
Создайте сервисный аккаунт
Консоль управления
- В консоли управления
выберите нужный каталог. - В списке сервисов выберите Identity and Access Management.
- Нажмите кнопку Создать сервисный аккаунт.
- Введите имя сервисного аккаунта:
sa-for-function
. - Нажмите кнопку
Добавить роль и выберите рольfunctions.functionInvoker
. - Нажмите кнопку Создать.
Создайте функцию, которая фильтрует данные
Консоль управления
- В консоли управления
выберите сервис Cloud Functions. - Создайте функцию:
- В правом верхнем углу нажмите кнопку Создать функцию.
- Введите имя функции:
filter-function
. - Нажмите кнопку Создать.
- Создайте версию функции:
- В открывшемся окне Редактор выберите
Node.js 18
. - Отключите опцию Добавить файлы с примерами кода.
- Нажмите кнопку Продолжить.
- Создайте файл
index.js
и добавьте в него следующий код:module.exports.handler = async function (data, context) { return { id: data.id, name: data.name, email: data.email, }; };
- В блоке Параметры укажите в поле:
- Точка входа —
index.handler
; - Сервисный аккаунт —
sa-for-function
.
- Точка входа —
- Нажмите кнопку Сохранить изменения.
- В открывшемся окне Редактор выберите
Создайте функцию, которая возвращает электронные адреса
Консоль управления
- В консоли управления
выберите сервис Cloud Functions. - Создайте функцию:
- В правом верхнем углу нажмите кнопку Создать функцию.
- Введите имя функции:
return-function
. - Нажмите кнопку Создать.
- Создайте версию функции:
- В открывшемся окне Редактор выберите
Node.js 18
. - Отключите опцию Добавить файлы с примерами кода.
- Нажмите кнопку Продолжить.
- Создайте файл
index.js
и добавьте в него следующий код:module.exports.handler = async function (data, context) { return { result: "OK", emails: data.loaded_users.map(p => p.email) }; };
- В блоке Параметры укажите в поле:
- Точка входа —
index.handler
; - Сервисный аккаунт —
sa-for-function
.
- Точка входа —
- Нажмите кнопку Сохранить изменения.
- В открывшемся окне Редактор выберите
Создайте рабочий процесс
Консоль управления
-
В консоли управления
выберите сервис Serverless Integrations. -
Перейдите на вкладку Workflows.
-
В правом верхнем углу нажмите кнопку Создать рабочий процесс.
-
Введите имя рабочего процесса.
-
В поле Сервисный аккаунт укажите сервисный аккаунт
sa-for-function
. -
В поле YAML-спецификация добавьте спецификацию, которая приведена ниже. Укажите в поле
functionId
:- в шаге
process_user_transform_info
идентификатор функцииfilter-function
; - в шаге
upload_users
идентификатор функцииreturn-function
.
yawl: "0.1" start: get_users defaultRetryPolicy: maxDelay: 10s retryCount: 2 errorList: - STEP_QUOTA_EXCEEDED steps: get_users: httpCall: url: 'https://jsonplaceholder.typicode.com/\(.resource_type)' method: GET headers: {} query: {} output: '\({loaded_users: .})' next: process_users process_users: foreach: input: \(.loaded_users) output: '\({loaded_users: .})' next: upload_users do: start: process_user_get_info steps: process_user_get_info: httpCall: url: https://jsonplaceholder.typicode.com/users/\(.id) method: GET headers: {} query: {} next: process_user_transform_info output: '\({user: .})' retryPolicy: retryCount: 2 errorList: - HTTP_CALL_500 process_user_transform_info: functionCall: functionId: <идентификатор_функции> upload_users: functionCall: functionId: "<идентификатор_функции>" input: '\({loaded_users, resource_type})'
- в шаге
-
Нажмите кнопку Создать.
Запустите рабочий процесс
Консоль управления
- Выберите рабочий процесс.
- В правом верхнем углу нажмите Запустить.
- Введите входные данные в формате JSON:
{ "resource_type": "users" }
- Когда статус рабочего процесса изменится с
Выполняется
наВыполнен
, в блоке Данные на выходе появится следующий JSON-объект:{ "result": "OK", "emails": [ "Sincere@april.biz", "Shanna@melissa.tv", "Nathan@yesenia.net", "Julianne.OConner@kory.org", "Lucio_Hettinger@annie.ca", "Karley_Dach@jasper.info", "Telly.Hoeger@billy.biz", "Sherwood@rosamond.me", "Chaim_McDermott@dana.io", "Rey.Padberg@karina.biz" ] }