Skip to content

Latest commit

 

History

History
86 lines (72 loc) · 3.09 KB

File metadata and controls

86 lines (72 loc) · 3.09 KB

Подключение S3 хранилища для файлов

Вся работа основывается на Upload Plugin

Для хранения загружаемых файлов будем использовать S3 хранилище - Yandex Object Storage. В нем можно дешево хранить файлы и быстро раздавать их через cdn.

Инструкция по созданию бакета и настройке публичного доступа.

Устанавливаем в strapi плагин для работы с S3 хранилищем.

npm install @strapi/provider-upload-aws-s3 --save

Добавить конфигурацию в ./config/plugins.js для подключения к S3 Yandex cloud

module.exports = ({ env }) => ({
  upload: {
    config: {
      provider: 'aws-s3',
      providerOptions: {
        s3Options: {
          credentials: {
            accessKeyId: env('YC_ACCESS_KEY_ID'),
            secretAccessKey: env('YC_ACCESS_SECRET'),
          },
          region: 'ru-central1',
          endpoint: 'https://storage.yandexcloud.net',
          params: {
            Bucket: env('YC_BUCKET'),
          },
        },
      },
    },
  },
});

Для отображения в галерее превью картинок необходимо добавить домен в доверенный в ./config/middlewares.js.

{
    name: 'strapi::security',
    config: {
      contentSecurityPolicy: {
        useDefaults: true,
        directives: {
          'connect-src': ["'self'", 'https:'],
          'img-src': [
            "'self'",
            'data:',
            'blob:',
            'market-assets.strapi.io',
            'https://'+env('YC_BUCKET')+'.storage.yandexcloud.net',
          ],
          'media-src': [
            "'self'",
            'data:',
            'blob:',
            'market-assets.strapi.io',
            'https://'+env('YC_BUCKET')+'.storage.yandexcloud.net',
          ],
          upgradeInsecureRequests: null,
        },
      },
    },
  },

Создаем ключ и секрет для загрузки файлов в бакет.

  1. Создайте сервисный аккаунт.
  2. Назначьте сервисному аккаунту роль storage.uploader
    • Для возможности удаления необходима роль storage.editor
  3. Создайте статический ключ доступа.

Добавляем новые переменные окружения.

  • YC_BUCKET - название бакета
  • YC_ACCESS_KEY_ID - идентификатор ключа
  • YC_ACCESS_SECRET - секретный ключ

Путь к Media Library в админке http://localhost:1337/admin/plugins/upload