Публикую актуальную на 2024 год инструкцию по настройке облачного хранилища в модуле "Облачные хранилища" для провайдера Selectel. Selectel в 2023 году переделал интерфейсы и управление доступом к ресурсам, поэтому старые инструкции для новых пользователей Selectel не работают.
Во вкладке "Подключение" заполняем поля: Активность: {важно чекбокс снять!!!} Сортировка: 500 Провайдер: S3 compatible storage Регион: {поле осталось пустым} Имя сервера (API host): s3.ru-1.storage.selcloud.ru Ключ доступа: {Access S3-ключ} Секретный ключ: {Secret S3-ключ} Подключаться с использованием https: {чекбокс отмечен} Контейнер: {оставить то, что подставилось автоматически} Только для чтения: {чекбокс снят} Каноническое имя домена (CNAME): {поле оставляем пустым}
Нажимаем "Применить".
Первый раз вышло сообщение "Ошибка добавления контейнера: нераспознанный ответ службы (ошибка #3)." Настоящая ошибка выглядела так "Error establishing an SSL connection". Поймал настоящую ошибку, изменив в файле bitrix/modules/clouds/classes/general/storage_service_s3.php массив для записи в лог. И в файле init.php включил логирование запросов к провайдеру с помощью константы define('BX_CLOUDS_TRACE', true);
Для исправления ошибки "Error establishing an SSL connection", открыл в браузере https://s3.ru-1.storage.selcloud.ru/ и экспортировал все сертификаты из цепочки. Сертификаты на сервере с сайтом добавил в доверенные.
После добавления сертификатов в доверенные ошибка ушла. Подключение сохранилось и в Selectel контейнер создался.
В Selectel контейнер создается как приватный. Переходим в контейнер на вкладку "Конфигурация" https://my.selectel.ru/storage/{storage uid}/containers/ru-1/{имя контейнера}/configuration, делаем контейнер публичным. После того как сделали контейнер публичным, рядом на вкладке "Домены", появляется ссылка на публичный домен. https://{контейнер uid}.selstorage.ru Копируем публичный домен без https:// в поле "Каноническое имя домена (CNAME)" на вкладке "Подключение" в Битриксе, которое ранее оставили пустым.
Когда поле Каноническое имя домена (CNAME) не заполнено, битрикс формирует ссылки такого вида: https://s3.ru-1.storage.selcloud.ru/{название контейнера}/{путь до файла}, по которым доступ к файлу запрещен. Когда в поле Каноническое имя домена (CNAME) вписываем публичный домен, который предоставляет Selectel, то ссылки становятся https://{публичный домен контейнера}/{путь до файла} и файлы начинают скачиваться.
Переходим на вкладку "Правила". По умолчанию там правило с пустыми полями. Заполняем значения в полях. Если оставить пустыми, то после активации подключения в хранилище полетят ВСЕ новые файлы.
Сохраняем.
В списке подключений https://example.ru/bitrix/admin/clouds...hp?lang=ru, когда все согласования пройдены, у подключения в контекстном меню нажимаем "Активировать", далее "Переместить файлы в облачное хранилище". Ждем перемещения, после этого сбрасываем кэш сайта.
Есть вопрос по доступу к файлам в бакете. Удалось ли запретить их отдачу по прямой ссылке, чтобы только Битрикс мог забирать файл и отдавать пользователю. А если у пользователя есть ссылка на файл, то он бы не мог его скачать? В Яндекс Клауде такое с ходу наладить не удалось и тему забросил.
По умолчанию создается приватный контейнер и доступ по прямой ссылке запрещен. Доступно ли в модуле "Облачные хранилища" чтение содержимого файла по API - не знаю. Не работал с приватными контейнерами.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».