Разделы

Переменные окружения и секреты

Настраивайте переменные окружения, подстановку секретов, ключи провайдеров и доступ к ним в рантайме из тестовой панели функции — значения сохраняются в записи функции и попадают в process.env / os.environ / os.Getenv при старте контейнера.

Переменные окружения

Задайте переменные функции в тестовой панели: откройте вкладку Настройки, раскройте секцию Окружение, добавьте ключи и значения и сохраните функцию. Значения хранятся в записи функции и передаются в контейнер как переменные окружения при запуске.

Относитесь к этим значениям как к конфиденциальной конфигурации: они сохраняются в базе данных приложения вместе с остальными данными функции. Если на сервере задан <code>ENCRYPTION_KEY</code>, значения переменных окружения шифруются на диске алгоритмом AES-256-GCM (конверт <code>enc:v1:</code>); без ключа они хранятся в открытом виде. В любом случае ограничивайте доступ к базе, не коммитьте реальные учётные данные в систему контроля версий и ротируйте их при утечке.

Секреты и чувствительные значения

В секции Окружение используйте поля с типом пароля — так значения сложнее подсмотреть при вводе. Платформа маскирует типичные секретоподобные строки в сохранённых логах и трассах там, где работает редактирование, — но это конфигурация функции, а не полноценный отдельный менеджер секретов.

Ротируйте учётные данные при утечке. Для долгоживущих продакшен-секретов предпочитайте подстановку из CI/CD или окружения хоста, а не хранение только в записи функции.

set-env.js
// Per-function env vars (Config → Environment in the editor, or API):
await api.updateFunction("function-id", {
  envVars: {
    OPENAI_API_KEY: "sk-...",
  },
});

// Values are stored on the function and injected into the container at invoke time
index.js
export async function handler(event, context) {
  // OPENAI_API_KEY comes from function env — avoid logging it
  const payload = typeof event.body === 'string' ? JSON.parse(event.body || '{}') : (event || {});
  const { prompt } = payload;
  const openai = new OpenAI({
    apiKey: process.env.OPENAI_API_KEY,
  });

  const completion = await openai.chat.completions.create({
    model: "gpt-4o-mini",
    messages: [{ role: "user", content: prompt }],
  });

  return {
    statusCode: 200,
    body: JSON.stringify({ result: completion.choices[0].message.content }),
  };
}