Хранилище файлов: S3 (Pro)

File storage: S3(Pro)Professional Edition+

Введение

Опираясь на плагин управления файлами, эта версия добавляет поддержку типов хранения файлов, совместимых с протоколом S3. Любой сервис объектного хранения, поддерживающий протокол S3, можно легко интегрировать, например Amazon S3, Alibaba Cloud OSS, Tencent Cloud COS, MinIO, Cloudflare R2 и т.д., повышая совместимость и гибкость сервисов хранения.

Возможности

  1. Загрузка на стороне клиента: Файлы загружаются напрямую в сервис хранения без прохождения через сервер NocoBase, что обеспечивает более эффективную и быструю загрузку.

  2. Приватный доступ: Все URL файлов являются подписанными временными адресами авторизации, что обеспечивает безопасный доступ к файлам и ограничение по времени.

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

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

  2. Хранение вложений в поле вложений: Храните вложения, загруженные через формы или записи, и связывайте их с конкретными записями данных.

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

  1. Включите плагин plugin-file-storage-s3-pro.

  2. Перейдите в "Настройки -> Файловый менеджер", чтобы открыть настройки управления файлами.

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

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

Конфигурация провайдера сервиса

Amazon S3

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

  1. Откройте консоль Amazon S3 (Amazon S3 Console).

  2. Нажмите кнопку "Create bucket (Создать бакет)" справа.

  1. Укажите Bucket Name, оставьте остальные поля значениями по умолчанию, прокрутите вниз и нажмите кнопку "Create", чтобы завершить процесс.

Настройка CORS

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

  1. Перейдите на вкладку Permission и прокрутите вниз до раздела настройки CORS.

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

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

  1. Нажмите кнопку Security credentials в правом верхнем углу.

  1. Прокрутите до раздела Access Keys и нажмите Create Access Key.

  1. Подтвердите условия (рекомендуется использовать IAM в производственной среде).

  1. Сохраните отображаемые Access Key и Secret Access Key.

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

  1. Используйте полученные AccessKey ID и AccessKey Secret.

  2. Откройте панель свойств бакета, чтобы найти Bucket Name и Region.

Публичный доступ (опционально)

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

  1. В панели Permissions прокрутите до Object Ownership, нажмите Edit и включите ACLs.

  1. Прокрутите до Block public access, нажмите Edit и установите, чтобы разрешить контроль ACL.

  1. В NocoBase включите Публичный доступ.

Настройка превью миниатюр (опционально)

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

  1. Откройте Dynamic Image Transformation for Amazon CloudFront.

  2. Нажмите кнопку Launch in the AWS Console в нижней части страницы, чтобы начать развертывание.

  1. Следуйте подсказкам, чтобы завершить конфигурацию. На следующие параметры нужно обратить особое внимание:
    1. При создании стека необходимо указать имя Amazon S3 бакета, в котором находятся исходные изображения. Введите имя бакета, которое вы указали ранее.
    2. Если вы выбрали развертывание демо-интерфейса (demo UI), после развертывания можно использовать интерфейс для тестирования функциональности обработки изображений. В консоли AWS CloudFormation выберите ваш стек, перейдите на вкладку Outputs, найдите значение, соответствующее ключу DemoUrl, и откройте демо-интерфейс по ссылке.
    3. Это решение использует библиотеку sharp Node.js для эффективной обработки изображений. Исходный код можно скачать из репозитория GitHub и при необходимости настроить.

  1. Когда конфигурация завершена, дождитесь, пока статус развертывания изменится на CREATE_COMPLETE.

  2. В конфигурации NocoBase обратите внимание на следующее:

    1. Правило для миниатюр: Укажите параметры обработки изображений, например ?width=100. Подробнее см. в документации AWS.
    2. Конечная точка доступа: После развертывания введите значение из Outputs -> ApiEndpoint.
    3. Стиль URL для доступа: Выберите Игнорировать (так как имя бакета уже указано в конфигурации, оно не требуется для доступа).

Пример конфигурации

Alibaba Cloud OSS

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

  1. Откройте консоль OSS.

  1. В левом меню выберите Buckets и нажмите Create Bucket.

  1. Укажите данные бакета и нажмите Create.

    • Bucket Name: Выберите в соответствии с вашими бизнес-задачами.

    • Region: Выберите ближайший регион для ваших пользователей.

    • Остальные параметры можно оставить по умолчанию или настроить при необходимости.

Настройка CORS

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

  1. В центральном меню нажмите Content Security -> CORS.

  1. Нажмите Create Rule, заполните поля, прокрутите вниз и нажмите OK. Вы можете ориентироваться на приведенный ниже скриншот или настроить более детальные параметры.

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

  1. Нажмите AccessKey под аватаром аккаунта в правом верхнем углу.

  1. В демонстрационных целях мы создадим AccessKey с помощью основной учетной записи. В производственной среде рекомендуется использовать RAM для создания AccessKey. Инструкции см. в документации Alibaba Cloud.

  2. Нажмите кнопку Create AccessKey.

  1. Завершите проверку учетной записи.

  1. Сохраните отображаемые Access Key и Secret Access Key.

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

  1. Используйте AccessKey ID и AccessKey Secret, полученные на предыдущем шаге.

  2. Перейдите на страницу сведений о бакете, чтобы получить имя Bucket.

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

  1. Получите адрес endpoint и добавьте префикс https:// при вводе в NocoBase.

Настройка превью миниатюр (опционально)

Эта настройка необязательна и применяется только при оптимизации размера или эффекта предпросмотра изображений.

  1. Укажите соответствующие параметры для Правило для миниатюр. Для конкретных настроек параметров см. документацию Alibaba Cloud по обработке изображений.

  2. Параметры Стиль URL для загрузки и Стиль URL для доступа оставьте без изменений (то же значение).

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

MinIO

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

  1. Нажмите в левом меню Buckets, затем нажмите Create Bucket, чтобы открыть страницу создания.
  2. Введите имя бакета, затем нажмите кнопку Save.

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

  1. Перейдите в Access Keys, затем нажмите кнопку Create access key, чтобы открыть страницу создания.

  1. Нажмите кнопку Save.

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

Конфигурация параметров

  1. Перейдите на страницу Файловый менеджер в NocoBase.

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

  3. Заполните форму:

    • ID ключа доступа и Секрет ключа доступа: используйте значения, сохраненные на предыдущем шаге.
    • Регион: приватно развернутый MinIO не имеет понятия региона; можно задать значение "auto".
    • Точка доступа: введите доменное имя или IP-адрес развернутого сервиса.
    • Установите Стиль URL для доступа на Стиль пути.

Пример конфигурации

Tencent COS

См. настройки для сервисов хранения выше. Логика аналогична.

Пример конфигурации

Cloudflare R2

См. настройки для сервисов хранения выше. Логика аналогична.

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

Руководство пользователя

См. документацию по плагину Файловый менеджер.