Середовище та секрети
Конфігурація зберігається поза вихідним кодом. Задавайте змінні в консолі, через REST або з агента — платформа зберігає їх (секрети в зашифрованому вигляді) і застосовує, коли застосунок перестворюється.
Три рівні#
- Додані платформою — завжди
PLATFORM_PROJECT,PLATFORM_USERіPORT; зs3: trueтакожS3_ENDPOINT,S3_BUCKET,S3_ACCESS_KEY,S3_SECRET_KEY; для кожної бази даних уdatabases:— п'ять зміннихDB_<NAME>_*. platform.yaml→env— сталі значення, що зберігаються разом із вихідним кодом.- Змінні проєкту — те, чим ви керуєте на вкладці «Середовище». Цей рівень має найвищий пріоритет; він ніколи не може перекрити ім'я, яке належить платформі, бо зарезервовані імена відхиляються.
Вкладка «Середовище»#
Натисніть «Додати змінну», вкажіть ім'я та значення й позначте «секретна», якщо значення є обліковими даними. Секрети зберігаються в зашифрованому вигляді й показуються як ••••. Коли ви змінюєте секрет, поле спочатку порожнє — введене нове значення замінює старе.
Після будь-якої зміни вкладка показує «Збережено, але ще не застосовано.» Запущений застосунок працює зі старими змінними, доки ви не натиснете «Перестворити застосунок зараз» (кілька секунд простою, томи зберігаються) або не розгорнете знову.
Правила#
| Правило | Значення |
|---|---|
| Ім'я | [A-Za-z_][A-Za-z0-9_]*, не більше 128 символів |
| Зарезервовані (відхиляються) | PORT, усе, що починається з PLATFORM_, S3_ або DB_ |
| Значення | не більше 8 КіБ |
| Кількість | не більше 100 змінних на проєкт |
| Багаторядкові секрети | задаються через REST або MCP; поле в консолі однорядкове |
Лише під час роботи
Змінні недоступні під час збірки образу. npm run build, pip install та подібні команди їх не бачать. Конфігурацію для збірки задавайте в build_cmd/install_cmd у platform.yaml або читайте змінну під час запуску застосунку.
Секрети лише для запису#
Значення секрету не повертається жодним шляхом — ні консоллю, ні REST, ні MCP, ні записами аудиту, ні журналами, ні повідомленнями про помилки. Єдиний спосіб його змінити — задати його знову. Вкладка «Застосунок» і GET /projects/{id}/app перелічують імена, які отримує застосунок, і їхнє джерело (platform, platform.yaml, project variable), а там, де це доречно, — позначку «секретна»; значень вони не показують ніколи.
Усе, що ви передаєте агенту, стає частиною розмови
Через MCP-інструмент set_env значення проходить крізь контекст агента. Використовуйте set_env для безпечної конфігурації, а справжні облікові дані задавайте в консолі.
REST і MCP#
# список (значення секретів завжди null)
curl -fsS "$BASE/api/v1/projects/$PID/env" -H "Authorization: Bearer $TOKEN"
# створити або оновити
curl -fsS -X PUT "$BASE/api/v1/projects/$PID/env/LOG_LEVEL" \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{"value":"debug","is_secret":false}'
# видалити (значення з platform.yaml з таким самим іменем знову починає діяти)
curl -fsS -X DELETE "$BASE/api/v1/projects/$PID/env/LOG_LEVEL" -H "Authorization: Bearer $TOKEN"
# застосувати
curl -fsS -X POST "$BASE/api/v1/projects/$PID/app/recreate" -H "Authorization: Bearer $TOKEN"
list_env(project=7)
set_env(project=7, key="LOG_LEVEL", value="debug", is_secret=false)
unset_env(project=7, key="LOG_LEVEL")
app_recreate(project=7)
set_env повертає {key, is_secret, value, created, note}; для секретів значення дорівнює null.
Який рівень задав цю змінну?#
Відкрийте вкладку «Застосунок»: картка «Змінні середовища» перелічує імена всіх змінних зі стовпцем «Джерело». Ім'я, що трапляється в списку один раз, має рівно одне джерело; ім'я, яке ви задали і в platform.yaml, і як змінну проєкту, показує переможця — змінну проєкту.
