Вы можете монтировать файловые системы к вашей функции, чтобы обеспечить масштабируемое файловое хранилище. Затем функция может читать и записывать данные в файловых системах так же, как в локальных файловых системах. Каждая файловая система может быть общей для разных функций и инстансов. Вам необходимо указать такие сведения, как файловые системы и пути доступа функции.
Перед монтированием файловых систем включите доступ через следующие порты:
rpcinfo -p|grep mountd|grep tcp
Для получения подробной информации см. What Resources Does SFS Occupy?.
FunctionGraph поддерживает следующие типы файловых систем:
Scalable File Service (SFS) — это сервис сетевого хранилища (NAS), предоставляющий масштабируемое высокопроизводительное файловое хранилище. С помощью SFS можно обеспечить совместный доступ между несколькими ECS, Bare Metal Server (BMS) и контейнерами Cloud Container Engine (CCE) и Cloud Container Instance (CCI). SFS масштабируется до петабайт и предоставляет полностью управляемое совместное файловое хранилище. Он обладает высокой доступностью и надёжностью и беспрепятственно обрабатывает приложения с интенсивным использованием данных и пропускной способности. SFS подходит для высокопроизводительных вычислений (HPC), обработки медиа, совместного использования файлов, управления контентом и веб‑сервисов.
SFS Turbo масштабируется до 320 ТБ и предоставляет полностью управляемое совместное файловое хранилище. Он обладает высокой доступностью и надёжностью и поддерживает огромное количество небольших файлов и приложений, требующих низкой задержки и высокой пропускной способности ввода‑вывода (IOPS). SFS Turbo подходит для высокопроизводительных веб‑сайтов, хранения логов, сжатия и распаковки, DevOps, офисов предприятий и контейнеризованных приложений.
Каталог на ECS указывается как общая файловая система (см. Creating an NFS Shared Directory on ECS) с помощью сервиса сетевой файловой системы (NFS). Затем каталог можно смонтировать к функции в том же VPC, что и ECS, чтобы функция могла читать и записывать данные в каталоге. Файловые системы ECS позволяют динамически расширять вычислительные ресурсы. Этот тип файловой системы подходит для сценариев с низким уровнем нагрузки.
Преимущества использования этих файловых систем:
Во временном каталоге /tmp можно записывать временные файлы. Общий размер этих файлов не может превышать 10 240 MB.
Перед добавлением файловых систем к функции укажите агентство с правами доступа к сервисам файловой системы для функции.
Существует ограничение на максимальное количество создаваемых агентств, и агентства облачных сервисов нельзя изменять. Поэтому рекомендуется создать агентство с правами высокого уровня, например, Tenant Administrator, чтобы функция могла получать доступ ко всем ресурсам в выбранном регионе. Подробнее см. Creating an Agency.
Setting an Agency
На странице вкладки Configuration выберите агентство, которому предоставлены права SFS Administrator или Tenant Administrator в выбранном регионе.
Если доступных агентств нет, создайте одно в IAM.
Mounting a File System
На странице сведений о функции выберите Configuration → Disk Mounting и нажмите Mount File System. При первом монтировании файловой системы к целевой функции необходимо задать User ID и group ID.
User ID и group ID (аналогично uid и gid в Linux) позволяют функции получать доступ к конкретной файловой системе. User ID: введите –1 или целое число от 1 до 65 534, кроме 1000 и 1002. Значение по умолчанию –1 указывает, что бекенд FunctionGraph автоматически выделяет идентификатор. Group ID: Введите –1 или целое число от 1 до 65,534, кроме 1000 и 1002. Значение по умолчанию –1 указывает, что бекенд FunctionGraph автоматически выделяет идентификатор.
Например, ECS смонтирован с файловой системой SFS, и владельцем каталога в файловой системе является test-user. Затем вы можете выполнить команду id test-user, чтобы запросить uid и gid.
Выберите файловую систему SFS и задайте путь доступа.
Путь доступа функции может содержать не более двух уровней. /mnt и /home являются существующими путями. Рекомендуется задать путь доступа, начинающийся с /mnt или /home. Если задать путь /mnt или /home, будет отображено сообщение "failed to mount exist system path".
Настройка Agency
Перед монтированием файловой системы SFS Turbo к функции укажите агентство, которому предоставлены разрешения SFS Administrator и VPC Administrator для функции. Если доступных агентств нет, создайте его в IAM. Подробнее см. Creating an Agency.
Настройка доступа VPC
Файловая система SFS Turbo доступна только в VPC, в которой она была создана. Перед монтированием такой файловой системы к функции включите доступ VPC для функции.
Монтирование файловой системы SFS Turbo
Файловые системы SFS Turbo можно монтировать так же, как файловые системы SFS. Выберите файловую систему и задайте путь доступа.
Указание Agency
Перед монтированием общей директории ECS к функции укажите agency, которой предоставлены Tenant Guest и VPC Administrator разрешения для функции. Если доступных agency нет, создайте её в IAM. Для подробностей см. Creating an Agency.
Настройка доступа к VPC
Перед добавлением общей директории ECS укажите VPC, в которой развернут ECS. Просмотрите информацию о VPC на странице сведений ECS. Нажмите VPC name, чтобы перейти на страницу сведений VPC, и просмотрите подсеть.
Установите полученные VPC и подсеть для функции.
Монтирование директории ECS
Введите общую директорию и путь доступа функции.
Функция может читать и записывать данные в пути доступа так же, как в смонтированной файловой системе.
Function logs могут сохраняться, настроив log path как поддиректорию в пути доступа.
Ниже используется SFS Turbo и шаблон Web-Server-Access-Log-Statistics в качестве примера для описания того, как анализировать логи серверов, работающих в облаке.
Для указания путей к файлам в файловой системе используйте абсолютные пути, начинающиеся со слеша (/). Однако если файловая система не смонтирована, можно опустить слеш (/) и просто задать параметр code/access_log.log.
import shutil
shutil.copyfile('/opt/function/code/access_log.log', '/home/test/access_log.log')
Кроме того, добавьте публичную зависимость Jinja2-2.10. Подробности см. в How Do I Add a Dependency to a Function?
Если файловая система не смонтирована, добавлять предыдущий код не требуется.
Рисунок 1 Результат теста

Рисунок 2 Отображение результатов
