---
pkg: '@nocobase/plugin-file-storage-s3-pro'
---

# Движок хранения: S3 (Pro)

## Введение

Расширяя возможности плагина «Управление файлами», мы добавили поддержку типов файлового хранилища, совместимых с протоколом S3. Теперь вы можете легко интегрировать любой сервис объектного хранения, поддерживающий протокол S3, такой как Amazon S3, Aliyun OSS, Tencent COS, MinIO, Cloudflare R2 и другие. Это значительно повышает совместимость и гибкость ваших сервисов хранения.

## Особенности

1. **Загрузка на стороне клиента**: Процесс загрузки файлов не проходит через сервер NocoBase, а напрямую подключается к сервису файлового хранения, обеспечивая более эффективную и быструю загрузку.
    
2. **Приватный доступ**: При доступе к файлам все URL-адреса являются временными авторизованными ссылками с подписью, что гарантирует безопасность и актуальность доступа к файлам.

## Сценарии использования

1. **Управление коллекциями файлов**: Централизованное управление и хранение всех загруженных файлов с поддержкой различных типов и методов хранения для удобной классификации и поиска.
    
2. **Хранение вложений в полях**: Используется для хранения данных вложений, загруженных в формы или записи, с поддержкой связи с конкретными записями данных.
  

## Настройка плагина

1. Включите **плагин** `plugin-file-storage-s3-pro`.
    
2. Перейдите в "Настройки -> Управление файлами" (Setting -> FileManager), чтобы открыть параметры управления файлами.

3. Нажмите кнопку "Добавить новый" (Add new) и выберите "S3 Pro".

![](https://static-docs.nocobase.com/20250102160704938.png)

4. После появления всплывающего окна вы увидите форму с множеством полей для заполнения. Вы можете обратиться к последующей документации, чтобы получить необходимую информацию о параметрах для соответствующего файлового сервиса и правильно заполнить форму.

![](https://static-docs.nocobase.com/20250413190828536.png)

## Настройка поставщика услуг

### Amazon S3

#### Создание бакета

1. Откройте [https://ap-southeast-1.console.aws.amazon.com/s3/home](https://ap-southeast-1.console.aws.amazon.com/s3/home), чтобы войти в консоль S3.
    
2. Нажмите кнопку "Создать бакет" (Create bucket) справа.

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355969452.png)

2. Заполните поле «Имя бакета» (Bucket Name). Остальные поля можно оставить со значениями по умолчанию. Прокрутите страницу вниз и нажмите кнопку **«Создать»** (Create), чтобы завершить создание.

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355969622.png)

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355969811.png)

#### Настройка CORS

1. Перейдите в список бакетов, найдите и нажмите на только что созданный бакет, чтобы открыть страницу его деталей.

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355969980.png)

2. Перейдите на вкладку "Разрешения" (Permission), затем прокрутите вниз до раздела настройки CORS.

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355970155.png)

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355970303.png)

3. Введите следующую конфигурацию (вы можете настроить ее более детально) и сохраните.
    
```json
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "POST",
            "PUT"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "ETag"
        ],
        "MaxAgeSeconds": 3000
    }
]
```

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355970494.png)

#### Получение AccessKey и SecretAccessKey

1. Нажмите кнопку "Учетные данные безопасности" (Security credentials) в правом верхнем углу страницы.

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355970651.png)

2. Прокрутите вниз до раздела "Ключи доступа" (Access Keys) и нажмите кнопку "Создать ключ доступа" (Create Access Key).

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355970832.png)

3. Нажмите "Согласен" (это демонстрация с использованием корневой учетной записи; в рабочей среде рекомендуется использовать IAM).

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355970996.png)

4. Сохраните отображаемые на странице Access key и Secret access key.

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355971168.png)

#### Получение и настройка параметров

1. AccessKey ID и AccessKey Secret — это значения, полученные вами на предыдущем шаге. Пожалуйста, введите их точно.
    
2. Перейдите на панель свойств страницы сведений о бакете, где вы сможете получить информацию об имени бакета (Bucket Name) и регионе (Region).

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355971345.png)

#### Публичный доступ (необязательно)

Это необязательная настройка. Выполните ее, если вам нужно сделать загруженные файлы полностью публичными.

1. Перейдите на панель "Разрешения" (Permissions), прокрутите вниз до "Владение объектами" (Object Ownership), нажмите "Редактировать" и включите ACL.

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355971508.png)

2. Прокрутите до "Блокировать публичный доступ" (Block public access), нажмите "Редактировать" и установите разрешение на управление ACL.

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355971668.png)

3. В NocoBase установите флажок "Публичный доступ" (Public access).

#### Настройка миниатюр (необязательно)

Эта настройка является необязательной и используется для оптимизации размера или эффектов предварительного просмотра изображений. **Обратите внимание, что это решение для развертывания может повлечь за собой дополнительные расходы. Подробную информацию о тарифах см. в соответствующих условиях AWS.**

1. Посетите страницу [Dynamic Image Transformation for Amazon CloudFront](https://aws.amazon.com/solutions/implementations/dynamic-image-transformation-for-amazon-cloudfront/?nc1=h_ls).

2. Нажмите кнопку `Launch in the AWS Console` в нижней части страницы, чтобы начать развертывание решения.
   ![](https://static-docs.nocobase.com/20250221164214117.png)

3. Следуйте подсказкам для завершения настройки. Обратите особое внимание на следующие параметры:
   1. При создании стека вам потребуется указать имя бакета Amazon S3, содержащего исходные изображения. Пожалуйста, введите имя бакета, который вы создали ранее.
   2. Если вы выбрали развертывание демонстрационного пользовательского интерфейса, вы сможете протестировать функции обработки изображений через этот интерфейс после развертывания. В консоли AWS CloudFormation выберите свой стек, перейдите на вкладку "Выводы" (Outputs), найдите значение, соответствующее ключу DemoUrl, и нажмите на эту ссылку, чтобы открыть демонстрационный интерфейс.
   3. Это решение использует библиотеку `sharp` Node.js для эффективной обработки изображений. Вы можете загрузить исходный код из репозитория GitHub и настроить его по мере необходимости.
   
   ![](https://static-docs.nocobase.com/20250221164315472.png)
   ![](https://static-docs.nocobase.com/20250221164404755.png)

4. После завершения настройки дождитесь, пока статус развертывания изменится на `CREATE_COMPLETE`.

5. В настройках NocoBase есть несколько важных моментов:
   1. `Thumbnail rule`: Заполните параметры, связанные с обработкой изображений, например, `?width=100`. Подробности см. в [документации AWS](https://docs.aws.amazon.com/solutions/latest/serverless-image-handler/use-supported-query-param-edits.html).
   2. `Access endpoint`: Введите значение из Outputs -> ApiEndpoint после развертывания.
   3. `Full access URL style`: Необходимо установить флажок **Ignore** (Игнорировать), так как имя бакета уже было указано при настройке и больше не требуется для доступа.
   
   ![](https://static-docs.nocobase.com/20250414152135514.png)

#### Пример настройки

![](https://static-docs.nocobase.com/20250414152344959.png)

### Aliyun OSS

#### Создание бакета

1. Откройте консоль OSS [https://oss.console.aliyun.com/overview](https://oss.console.aliyun.com/overview).

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355972149.png)

2. В левом меню нажмите "Бакеты" (Buckets), затем нажмите кнопку "Создать бакет" (Create Bucket), чтобы начать создание бакета.

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355972413.png)

3. Заполните соответствующую информацию о бакете и нажмите кнопку "Создать" (Create).
    
    1. Имя бакета (Bucket Name) должно соответствовать вашим бизнес-потребностям; имя может быть произвольным.
        
    2. Выберите регион (Region), ближайший к вашим пользователям.
        
    3. Остальные настройки можно оставить по умолчанию или настроить в соответствии с вашими требованиями.    

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355972730.png)

#### Настройка CORS

1. Перейдите на страницу сведений о бакете, созданном на предыдущем шаге.

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355973018.png)

2. В центральном меню нажмите "Безопасность контента -> CORS" (Content Security -> CORS).

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355973319.png)

3. Нажмите кнопку "Создать правило" (Create Rule), заполните соответствующее содержимое, прокрутите вниз и нажмите "ОК". Вы можете обратиться к скриншоту ниже или настроить более детальные параметры.

![](https://static-docs.nocobase.com/20250219171042784.png)

#### Получение AccessKey и SecretAccessKey

1. Нажмите "AccessKey" под изображением вашего профиля в правом верхнем углу.

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355973884.png)

2. Для демонстрационных целей мы создаем AccessKey с использованием основной учетной записи. В рабочей среде рекомендуется использовать RAM для создания. Вы можете обратиться к [https://www.alibabacloud.com/help/en/ram/user-guide/create-an-accesskey-pair](https://www.alibabacloud.com/help/en/ram/user-guide/create-an-accesskey-pair).
    
3. Нажмите кнопку "Создать AccessKey" (Create AccessKey).

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355974171.png)

4. Выполните проверку учетной записи.

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355974509.png)

5. Сохраните отображаемые на странице Access key и Secret access key.

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355974781.png)

#### Получение и настройка параметров

1. AccessKey ID и AccessKey Secret — это значения, полученные на предыдущем шаге.
    
2. Перейдите на страницу сведений о бакете, чтобы получить имя бакета (Bucket Name).

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355975063.png)

3. Прокрутите вниз, чтобы получить регион (Region) (часть ".aliyuncs.com" не нужна).

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355975437.png)

4. Получите адрес конечной точки (endpoint); при вводе в NocoBase необходимо добавить префикс https://.

![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355975715.png)

#### Настройка миниатюр (необязательно)

Эта настройка является необязательной и используется только тогда, когда вам нужно оптимизировать размер или эффекты предварительного просмотра изображений.

1. Заполните соответствующие параметры `Thumbnail rule`. Подробные настройки параметров см. в разделе [Параметры обработки изображений](https://www.alibabacloud.com/help/en/object-storage-service/latest/process-images).

2. `Full upload URL style` и `Full access URL style` могут быть одинаковыми.

#### Пример настройки

![](https://static-docs.nocobase.com/20250414152525600.png)

### MinIO

#### Создание бакета

1. В левом меню нажмите "Бакеты" (Buckets) -> нажмите "Создать бакет" (Create Bucket), чтобы перейти на страницу создания.
2. После ввода имени бакета нажмите кнопку "Сохранить".

#### Получение AccessKey и SecretAccessKey

1. Перейдите в "Ключи доступа" (Access Keys) -> нажмите кнопку "Создать ключ доступа" (Create access key), чтобы перейти на страницу создания.

![](https://static-docs.nocobase.com/20250106111922957.png)

2. Нажмите кнопку "Сохранить".

![](https://static-docs.nocobase.com/20250106111850639.png)

1. Сохраните Access Key и Secret Key из всплывающего окна для последующей настройки.

![](https://static-docs.nocobase.com/20250106112831483.png)

#### Настройка параметров

1. Перейдите на страницу NocoBase -> "Управление файлами" (File manager).

2. Нажмите кнопку "Добавить новый" (Add new) и выберите S3 Pro.

3. Заполните форму:
   - **AccessKey ID** и **AccessKey Secret** — это значения, сохраненные на предыдущем шаге.
   - **Region**: В самостоятельно развернутом MinIO нет понятия региона, поэтому его можно настроить как "auto".
   - **Endpoint**: Введите доменное имя или IP-адрес вашего развертывания.
   - Необходимо установить `Full access URL style` в значение `Path-Style`.

#### Пример настройки

![](https://static-docs.nocobase.com/20250414152700671.png)

### Tencent COS

Вы можете использовать настройки файловых сервисов, описанные выше, так как логика схожа.

#### Пример настройки

![](https://static-docs.nocobase.com/20250414153252872.png)

### Cloudflare R2

Вы можете использовать настройки файловых сервисов, описанные выше, так как логика схожа.

#### Пример настройки

![](https://static-docs.nocobase.com/20250414154500264.png)