Смонтировать бакеты в функцию
Вы можете монтировать в функцию бакеты Yandex Object Storage. При монтировании бакета создается новая версия функции.
Чтобы смонтировать бакеты в функцию:
-
В консоли управления
перейдите в каталог, в котором находится функция. -
В списке сервисов выберите Cloud Functions.
-
Выберите функцию.
-
Перейдите на вкладку Редактор.
-
В блоке Параметры выберите или создайте новый сервисный аккаунт с ролью:
storage.viewer
, чтобы только читать данные из смонтированного бакета.storage.uploader
, чтобы читать данные из смонтированного бакета и записывать их в него.
-
Раскройте секцию Дополнительные настройки.
-
В блоке Смонтированные бакеты:
-
Нажмите Добавить бакет.
-
Укажите в поле:
- Точка монтирования — точку монтирования. Директория, к которой смонтируется бакет, будет доступна по пути
/function/storage/<точка_монтирования>
. - Бакет — бакет, который вы хотите смонтировать. При необходимости создайте новый бакет.
- Папка — папку в бакете, которая будет смонтирована в контейнер. Если поле пустое, смонтируется весь бакет.
- Точка монтирования — точку монтирования. Директория, к которой смонтируется бакет, будет доступна по пути
-
Чтобы запретить запись в бакет, включите опцию Только чтение. Если опция включена, данные из смонтированного бакета будут доступны только для чтения.
Чтобы смонтировать в функцию дополнительный бакет, повторно нажмите кнопку Добавить бакет и задайте необходимые параметры.
-
-
Нажмите кнопку Сохранить изменения.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Выполните команду:
yc serverless function version create \
--function-name=<имя_функции> \
--runtime <среда_выполнения> \
--entrypoint <точка_входа> \
--memory <объем_RAM> \
--execution-timeout <максимальное_время_выполнения> \
--source-path <путь_к_ZIP-архиву> \
--service-account-id <идентификатор_сервисного_аккаунта> \
--mount type=object-storage,mount-point=<точка_монтирования>,bucket=<имя_бакета>,prefix=<имя_папки>,mode=<режим_монтирования>
Где:
-
--function-name
— имя функции. -
--runtime
— среда выполнения функции. -
--entrypoint
— точка входа, указывается в формате<имя_файла_без_расширения>.<имя_обработчика>
. Например:index.handler
. -
--memory
— объем RAM. -
--execution-timeout
— максимальное время выполнения функции до таймаута. -
--source-path
— путь к ZIP-архиву, содержащему код функции и необходимые зависимости. -
--service-account-id
— идентификатор сервисного аккаунта. Для чтения данных из бакета сервисному аккаунту необходима рольstorage.viewer
, для чтения и записи — рольstorage.uploader
. -
--mount
— параметры монтирования бакета Object Storage:type
— тип монтируемого хранилища. Для бакета значение всегдаobject-storage
.mount-point
— точка монтирования. Директория, к которой смонтируется бакет, будет доступна по пути/function/storage/<точка_монтирования>
.bucket
— имя бакета.prefix
— папка в бакете, которая будет смонтирована в функции. Если поле не задано или пустое, смонтируется весь бакет.mode
— режим монтирования бакета:ro
— только чтение,rw
— чтение и запись.
Чтобы смонтировать в функцию одновременно несколько бакетов, задайте параметр
--mount
необходимое количество раз.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Откройте файл конфигурации Terraform и добавьте к описанию функции блок
mounts
:resource "yandex_function" "bucketfunction" { ... mounts { name = "<точка_монтирования>" mode = "<режим_монтирования>" object_storage { bucket = "<имя_бакета>" prefix = "<имя_папки>" } } }
Где:
-
mounts
— параметры монтирования бакета Object Storage:name
— точка монтирования. Директория, к которой смонтируется бакет, будет доступна по пути/function/storage/<точка_монтирования>
.mode
— режим монтирования бакета:ro
— только чтение,rw
— чтение и запись.object_storage
— параметры бакета:
Чтобы смонтировать в функцию одновременно несколько бакетов, задайте блок
mounts
необходимое количество раз.
Более подробную информацию о параметрах ресурса
yandex_function
см. в документации провайдера . -
-
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-
Проверить изменение версии функции и ее настройки можно в консоли управления
yc serverless function version get <идентификатор_версии_функции>
Воспользуйтесь методом REST API createVersion для ресурса Function или вызовом gRPC API FunctionService/CreateVersion.