Окружение
Переменные окружения
В таблице приведен список переменных окружения, которые определены в среде выполнения Cloud Functions и доступны для функции. Их нельзя переопределить.
| Ключ | Значение |
|---|---|
_HANDLER |
Расположение обработчика, указанное для функции. |
AWS_LAMBDA_RUNTIME_API |
Хост и порт API среды выполнения. |
LAMBDA_RUNTIME_DIR |
Путь к библиотекам среды выполнения. |
LAMBDA_TASK_ROOT |
Путь к директории с файлами вашей функции. |
PATH |
Набор директорий, в которых расположены исполняемые файлы. |
LD_LIBRARY_PATH |
Набор директорий, в которых расположены динамические библиотеки. |
Добавить дополнительные переменные окружения можно при создании версии функции. Лимит на максимальный объем переменных окружения, включая их имена, — 4 КБ.
Вычисление переменных окружения не осуществляется. Значения переменных окружения являются строковыми константами. Вычислить их можно только в коде функции.
Получить переменные окружения можно с помощью стандартных средств языка программирования.
Примеры использования
- Мониторинг состояния географически распределенных устройств
- Мониторинг показаний датчиков и уведомления о событиях
- Развертывание отказоустойчивой архитектуры с прерываемыми виртуальными машинами
Сертификат для доступа к управляемым базам данных
В окружении доступен SSL-сертификат для доступа к управляемым базам данных из вашего кода. Сертификат хранится в файле /usr/local/share/ca-certificates/yandex-internal-ca.crt.
Доверенные корневые сертификаты
Системное хранилище доверенных сертификатов доступно по пути /etc/ssl/certs/ca-certificates.crt. Помимо стандартного набора публичных удостоверяющих центров, в него добавлены:
- корневой сертификат Национального удостоверяющего центра Минцифры России (Russian Trusted Root CA);
- внутренний удостоверяющий центр Yandex Cloud.
Доверенные сертификаты поддерживаются во всех средах выполнения (Node.js 22, Python 3.12, PHP 8.2, Go 1.23, Java 21, Kotlin 2.0, .NET Core 8, R 4.3, Bash 22.04 и выше), а системные хранилища доверенных сертификатов — во всех, кроме Node.js и Python. Подробнее о работе с доверенными сертификатами в средах выполнения Node.js и Python читайте в соответствующих разделах ниже.
Код, использующий системное хранилище доверенных сертификатов, доверяет добавленным сертификатам без дополнительной настройки. Отключать проверку TLS не требуется. При этом если сайт передает неполную цепочку сертификатов и не отдает промежуточный сертификат, необходимо добавить недостающий промежуточный сертификат вместе с кодом функции.
Python
Библиотека requests проверяет сертификаты не по системному хранилищу, а по бандлу пакета certifi. В среде выполнения Cloud Functions этот бандл уже дополнен корневым сертификатом Минцифры и внутренним удостоверяющим центром Yandex Cloud.
Если указать requests или certifi в файле requirements.txt, при сборке в код функции установится собственная копия certifi без добавленных сертификатов, и requests будет использовать ее вместо подготовленной. В этом случае явно укажите бандл среды выполнения одним из способов:
-
задайте переменную окружения версии функции
REQUESTS_CA_BUNDLEсо значением/function/runtime/yc-ca-bundle.crt; -
передайте бандл в параметре
verifyпри вызовеrequests:import requests requests.get(url, verify="/function/runtime/yc-ca-bundle.crt")
Node.js
Node.js не использует системное хранилище доверенных сертификатов, поэтому среда выполнения передает ему путь к бандлу через переменную окружения NODE_EXTRA_CA_CERTS.
Не задавайте NODE_EXTRA_CA_CERTS в переменных окружения версии функции: Node.js читает эту переменную только при запуске процесса, и заданное значение не применится. При этом оно перезапишет значение, установленное средой выполнения, и функция перестанет доверять добавленным сертификатам.
Чтобы добавить дополнительный сертификат в Node.js-функции, подключайте его из кода через параметры HTTP-клиента или TLS-контекста.
Пользовательские файлы
Хранение пользовательских файлов реализовано в двух директориях:
-
/function/code— рабочая директория пользователя. Содержит весь код вашей функции и все файлы, которые были загружены как ZIP-архив. Доступна по относительному пути. -
/tmp— директория для хранения временных файлов. Используется сервисом для оптимизации повторных вызовов функции, которые последовательно обрабатываются одним ее экземпляром. Когда экземпляр функции завершает работу, данные удаляются из/tmp. Лимит на максимальный объем временных файлов — 512 МБ.При создании версии функции можно выделить часть оперативной памяти экземпляра функции для директории
tmp. Тогда заданный объем оперативной памяти смонтируется как RAM-диск в директорию/tmp. Объем оперативной памяти версии функции при этом должен быть не менее 1 ГБ.Если опция Выделять память для директории /tmp включена, предзагружаемые среды выполнения запускаются, как обычные.
Динамические библиотеки
Если для работы функции требуются динамические библиотеки, их можно загрузить в ZIP-архиве, положив в директорию /shared-libs в корне архива. Директория будет добавлена в переменную окружения LD_LIBRARY_PATH.
Динамические библиотеки должны быть собраны на Ubuntu 18.04 LTS и слинкованы с библиотекой libc версии 2.27.