Перейти к содержимому
getxflow.com

Платформа

Переменные и секреты

Как хранить ключи, пароли и настройки для функций проекта и как функции их читают.

Переменная окружения это пара «имя и значение» для облачных функций проекта: пароль от почты, ключ чужого API, адрес сервиса. Значения хранятся на платформе, а не в коде. Приложения переменных не получают.

Команда Что делает
xflow env список переменных: имя и для кого она
xflow env set ИМЯ=значение записать переменную или заменить значение
xflow env rm ИМЯ удалить переменную
xflow env check сверить код функций с тем, что записано на платформе
Окно терминала
xflow env set SMTP_PASSWORD=секрет --scope project
xflow env check
xflow deploy functions

env set и env check запускают в папке проекта, env и env rm работают и с --project <id>. Записывать и удалять может уровень «Редактирование», с «Просмотром» видны только имена.

Новое значение получат функции, выложенные после записи: нужен xflow deploy functions. До этого функции держат прежнее значение, удалённую переменную тоже видят до новой выкладки. После env set CLI подсказывает, какие функции читают переменную.

Флаг Кто получает
--scope organization функции всех проектов организации (по умолчанию)
--scope project функции только этого проекта

Другое слово после --scope отклоняется. Для одного проекта выбирайте --scope project. Переменную на организацию записывает только тот, кому открыты на правку все проекты, иначе ответ organization_scope_denied: запишите на проект или попросите Админа.

Имя уникально в организации. Команды видят только переменные, доступные проекту, поэтому env rm назовёт переменную чужого проекта отсутствующей. DATABASE_URL и всё, что начинается с XFLOW, заполняет платформа, записать их нельзя.

Только буквальным именем:

const password = process.env.SMTP_PASSWORD
const token = process.env['WB_TOKEN']

Платформа передаёт функции только переменные, имена которых написаны в её коде целиком. Такие формы значение не получат, и сборка функций с ними отклоняется:

const { SMTP_PASSWORD } = process.env // деструктуризация
const value = process.env[name] // имя из выражения
const value = process.env?.SMTP_PASSWORD // через ?.
const all = { ...process.env } // разворот целиком

xflow env check находит их заранее с файлом и строкой, а ещё переменные, которых нет на платформе (до записи функция получает undefined).

Значения хранятся зашифрованными и не возвращаются: ни в xflow env, ни в API, ни в логах. Забытое значение не прочитать, запишите новое.

Ключи, токены и пароли не пишут в исходники: код видят участники проекта, а ключ в коде приложения уезжает в браузер каждому посетителю. Сборка останавливается, если находит ключ знакомого вида: ключи xflow, Stripe, AWS, OpenAI, GitHub, OAuth-токены Яндекса и похожие. Незнакомый сборке ключ тоже не должен попадать в код.

Ключи привязанных интеграций появляются среди переменных сами, только для чтения: Интеграции.