[Документация Yandex Cloud](../../../index.md) > [Yandex Cloud Functions](../../index.md) > [Пошаговые инструкции](../index.md) > Управление функцией > Смонтировать внешние ресурсы на файловую систему функции > Смонтировать бакеты

# Смонтировать бакеты в функцию

Вы можете монтировать в функцию [бакеты](../../../storage/concepts/bucket.md) Yandex Object Storage. При монтировании бакета создается новая [версия](../../concepts/function.md#version) функции.

Чтобы смонтировать бакеты в функцию:

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://console.yandex.cloud) перейдите в каталог, в котором находится функция.
  1. Перейдите в сервис **Cloud Functions**.
  1. Выберите функцию.
  1. Перейдите на вкладку **Редактор**.
  1. В блоке **Параметры** выберите или создайте новый [сервисный аккаунт](../../../iam/concepts/users/service-accounts.md) с ролью:
     * [`storage.viewer`](../../../storage/security/index.md#storage-viewer), чтобы только читать данные из смонтированного [бакета](../../../storage/concepts/bucket.md).
     * [`storage.uploader`](../../../storage/security/index.md#storage-uploader), чтобы читать данные из смонтированного бакета и записывать их в него.
  1. Раскройте секцию **Дополнительные настройки**.
  1. В блоке **Смонтированные бакеты**:
  
      1. Нажмите **Добавить бакет**.
      1. Укажите в поле:

          * **Точка монтирования** — точку монтирования. Директория, к которой смонтируется бакет, будет доступна по пути `/function/storage/<точка_монтирования>`.
          * **Бакет** — бакет, который вы хотите смонтировать. При необходимости [создайте](../../../storage/operations/buckets/create.md) новый бакет.
          * **Папка** — [папку](../../../storage/concepts/object.md#folder) в бакете, которая будет смонтирована в контейнер. Если поле пустое, смонтируется весь бакет.
      1. Чтобы запретить запись в бакет, включите опцию **Только чтение**. Если опция включена, данные из смонтированного бакета будут доступны только для чтения.

      Чтобы смонтировать в функцию дополнительный бакет, повторно нажмите кнопку **Добавить бакет** и задайте необходимые параметры.
  1. Нажмите кнопку **Сохранить изменения**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Выполните команду:

  ```bash
  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` — [среда выполнения](../../concepts/runtime/index.md#runtimes) функции.
  * `--entrypoint` — точка входа, указывается в формате `<имя_файла_без_расширения>.<имя_обработчика>`. Например: `index.handler`.
  * `--memory` — объем RAM.
  * `--execution-timeout` — максимальное время выполнения функции до таймаута.
  * `--source-path` — путь к ZIP-архиву, содержащему код функции и необходимые зависимости.
  * `--service-account-id` — [идентификатор](../../../iam/operations/sa/get-id.md) сервисного аккаунта. Для чтения данных из бакета сервисному аккаунту необходима [роль](../../../storage/security/index.md#storage-viewer) `storage.viewer`, для чтения и записи — [роль](../../../storage/security/index.md#storage-uploader) `storage.uploader`.
  * `--mount` — параметры монтирования [бакета](../../../storage/concepts/bucket.md) Object Storage:
      * `type` — тип монтируемого хранилища. Для бакета значение всегда `object-storage`.
      * `mount-point` — точка монтирования. Директория, к которой смонтируется бакет, будет доступна по пути `/function/storage/<точка_монтирования>`.
      * `bucket` — [имя](../../../storage/concepts/bucket.md#naming) бакета.
      * `prefix` — [папка](../../../storage/concepts/object.md#folder) в бакете, которая будет смонтирована в функции. Если поле не задано или пустое, смонтируется весь бакет.
      * `mode` — режим монтирования бакета: `ro` — только чтение, `rw` — чтение и запись.

      Чтобы смонтировать в функцию одновременно несколько бакетов, задайте параметр `--mount` необходимое количество раз.

- Terraform {#tf}

  [Terraform](https://www.terraform.io/) позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
  
  Terraform распространяется под лицензией [Business Source License](https://github.com/hashicorp/terraform/blob/main/LICENSE), а [провайдер Yandex Cloud для Terraform](https://github.com/yandex-cloud/terraform-provider-yandex) — под лицензией [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/).
  
  Подробная информация о ресурсах провайдера в документации на сайте [Terraform](https://www.terraform.io/docs/providers/yandex/index.html) или в [зеркале](../../../terraform/index.md).

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../../terraform/authentication.md) соответствующим способом.

  1. Откройте файл конфигурации Terraform и добавьте к описанию функции блок `mounts`:

      ```hcl
      resource "yandex_function" "bucketfunction" {
        ...

        mounts {
          name = "<точка_монтирования>"
          mode = "<режим_монтирования>"
          object_storage {
            bucket = "<имя_бакета>"
            prefix = "<имя_папки>"
          }
        }

      }
      ```

      Где:

      * `mounts` — параметры монтирования [бакета](../../../storage/concepts/bucket.md) Object Storage:
          * `name` — точка монтирования. Директория, к которой смонтируется [бакет](../../../storage/concepts/bucket.md), будет доступна по пути `/function/storage/<точка_монтирования>`.
          * `mode` — режим монтирования бакета: `ro` — только чтение, `rw` — чтение и запись.
          * `object_storage` — параметры бакета:
              * `bucket` — [имя](../../../storage/concepts/bucket.md#naming) бакета.
              * `prefix` — [папка](../../../storage/concepts/object.md#folder) в бакете, которая будет смонтирована в контейнер. Если поле пустое, смонтируется весь бакет.

          Чтобы смонтировать в функцию одновременно несколько бакетов, задайте блок `mounts` необходимое количество раз.

      Подробнее о параметрах ресурса `yandex_function` в [документации провайдера](../../../terraform/resources/function.md).

  1. Примените изменения:

     1. В терминале перейдите в директорию с конфигурационным файлом.
     1. Проверьте корректность конфигурации с помощью команды:
     
        ```bash
        terraform validate
        ```
     
        Если конфигурация является корректной, появится сообщение:
     
        ```bash
        Success! The configuration is valid.
        ```
     
     1. Выполните команду:
     
        ```bash
        terraform plan
        ```
     
        В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
     1. Примените изменения конфигурации:
     
        ```bash
        terraform apply
        ```
     
     1. Подтвердите изменения: введите в терминале слово `yes` и нажмите **Enter**.

  Проверить изменение версии функции и ее настройки можно в [консоли управления](https://console.yandex.cloud) или с помощью команды [CLI](../../../cli/quickstart.md):

  ```bash
  yc serverless function version get <идентификатор_версии_функции>
  ```

- API {#api}

  Воспользуйтесь методом REST API [createVersion](../../functions/api-ref/Function/createVersion.md) для ресурса [Function](../../functions/api-ref/Function/index.md) или вызовом gRPC API [FunctionService/CreateVersion](../../functions/api-ref/grpc/Function/createVersion.md).

{% endlist %}

## Полезные ссылки {#see-also}

* [Монтирование внешних ресурсов на файловую систему функции](../../concepts/mounting.md)
* [Монтирование внешних ресурсов на файловую систему контейнера](../../../serverless-containers/concepts/mounting.md)