Платформа
Переменные и секреты
Как хранить ключи, пароли и настройки для функций проекта и как функции их читают.
Переменная окружения это пара «имя и значение» для облачных функций проекта: пароль от почты, ключ чужого API, адрес сервиса. Значения хранятся на платформе, а не в коде. Приложения переменных не получают.
Команды
Заголовок раздела «Команды»| Команда | Что делает |
|---|---|
xflow env |
список переменных: имя и для кого она |
xflow env set ИМЯ=значение |
записать переменную или заменить значение |
xflow env rm ИМЯ |
удалить переменную |
xflow env check |
сверить код функций с тем, что записано на платформе |
xflow env set SMTP_PASSWORD=секрет --scope projectxflow env checkxflow deploy functionsenv 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_PASSWORDconst 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-токены Яндекса и похожие. Незнакомый сборке ключ тоже не должен попадать в код.
Ключи привязанных интеграций появляются среди переменных сами, только для чтения: Интеграции.