Вы можете монтировать файловые системы к своей функции, чтобы обеспечить масштабируемое файловое хранилище. Функция затем может читать и записывать данные в файловых системах так же, как в локальных файловых системах. Каждая файловая система может быть общей для разных функций и instance. Вам необходимо указать информацию, такую как файловые системы и пути доступа function.
Перед монтированием файловых систем включите доступ через следующие порты:
rpcinfo -p|grep mountd|grep tcp
Для получения подробной информации см. What Resources Does SFS Occupy?
FunctionGraph поддерживает следующие типы файловых систем:
Scalable File Service (SFS) — это сервис сетевого хранилища (NAS), предоставляющий масштабируемое высокопроизводительное файловое хранилище. С помощью SFS можно обеспечить общий доступ между несколькими ECSs, Bare Metal Servers (BMSs) и контейнерами 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 МБ.
Перед добавлением файловых систем к функции укажите агентство с правами доступа к сервисам файловой системы для функции.
Существует ограничение на максимальное количество создаваемых агентств, а агентства облачных сервисов изменить нельзя. Поэтому рекомендуется создать агентство с правами высокого уровня, например, Tenant Administrator, чтобы функция могла получать доступ ко всем ресурсам в выбранном регионе. Подробнее см. Creating an Agency.
Настройка агентства
На странице вкладки Configuration выберите агентство, которому предоставлены права SFS Administrator или Tenant Administrator в выбранном регионе.
Если доступных агентств нет, создайте одно в IAM.
Подключение файловой системы
На странице сведений о функции выберите Configuration > Disk Mounting и нажмите Mount File System. При первом подключении файловой системы к целевой функции необходимо задать идентификатор пользователя и группы.
Идентификатор пользователя и группы (аналогично uid и gid в Linux) позволяют функции получать доступ к определённой файловой системе. User ID: введите –1 или целое число от 1 до 65 534, кроме 1000 и 1002. Значение по умолчанию –1 указывает, что бекенд FunctionGraph автоматически выделяет идентификатор. Group ID: Введите –1 или целое число от 1 до 65 534, кроме 1000 и 1002. Значение по умолчанию –1 указывает, что backend FunctionGraph автоматически выделяет ID.
Например, ECS смонтирован с файловой системой SFS, и владельцем каталога в файловой системе является test-user. Затем вы можете выполнить команду id test-user, чтобы запросить uid и gid.
Выберите файловую систему SFS и задайте путь доступа.
Путь доступа функции может содержать не более двух уровней. /mnt и /home являются существующими путями. Рекомендуется задать путь доступа, начинающийся с /mnt или /home. Если задать путь /mnt или /home, будет отображено сообщение "failed to mount exist system path".
Настройка агентства
Перед монтированием файловой системы SFS Turbo к функции укажите агентство, которой предоставлены разрешения SFS Administrator и VPC Administrator для функции. Если доступных агентств нет, создайте её в IAM. Подробности см. в Creating an Agency.
Настройка доступа VPC
Файловая система SFS Turbo доступна только в VPC, где она была создана. Перед монтированием такой файловой системы к функции включите доступ VPC для функции.
Монтирование файловой системы SFS Turbo
Файловые системы SFS Turbo можно монтировать так же, как файловые системы SFS. Выберите файловую систему и задайте путь доступа.
Указание агентства
Перед монтированием общего каталога ECS в функцию укажите агентство, которому предоставлены Tenant Guest и VPC Administrator разрешения для функции. Если доступных агентств нет, создайте его в IAM. Подробности см. Creating an Agency.
Настройка доступа к VPC
Перед добавлением общего каталога ECS укажите VPC, в котором развернут ECS. Просмотрите информацию о VPC на странице сведений ECS. Нажмите VPC name, чтобы перейти на VPC details page, и просмотрите подсеть.
Установите полученные VPC и подсеть для функции.
Монтирование каталога ECS
Введите общий каталог и путь доступа функции.
Функция может читать и записывать данные в пути доступа так же, как в смонтированной файловой системе.
Function logs могут сохраняться, настроив log path как подкаталог в пути доступа.
Ниже используется SFS Turbo и шаблон Web-Server-Access-Log-Statistics в качестве примера для описания того, как анализировать журналы серверов, работающих в облаке.
Figure 1 Function template

Чтобы указать пути к файлам в файловой системе, используйте абсолютные пути, начинающиеся со слеша (/). Однако, если файловая система не смонтирована, можно опустить добавление слеша (/) и просто установить параметр в code/access_log.log.
import shutil
shutil.copyfile('/opt/function/code/access_log.log', '/home/test/access_log.log')
Figure 2 Добавление кода

Кроме того, добавьте публичную зависимость Jinja2-2.10. Подробности см. How Do I Add a Dependency to a Function?
Если файловая система не смонтирована, добавлять предыдущий код не требуется.
Рисунок 3 VPC access

Рисунок 4 Настройка тестового события

Рисунок 5 Результат теста

Рисунок 6 Копирование URL

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