Object Storage для 1С-Битрикс: SigV4, CORS, CDN

При интеграции Яндекс Object Storage с 1С-Битрикс разработчики часто сталкиваются с неочевидными проблемами: несовместимостью подписей SigV4, блокировками CORS при загрузке файлов из браузера, некорректной работой кэширования через CDN. Типовой магазин на Битриксе хранит в `/upload/` от 10 до 50 ГБ
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Object Storage для 1С-Битрикс: SigV4, CORS, CDN
Простой
~1 день

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1460
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1019
  • Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    764
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    882
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    809
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1165

При интеграции Яндекс Object Storage с 1С-Битрикс разработчики часто сталкиваются с неочевидными проблемами: несовместимостью подписей SigV4, блокировками CORS при загрузке файлов из браузера, некорректной работой кэширования через CDN. Типовой магазин на Битриксе хранит в /upload/ от 10 до 50 ГБ изображений товаров. Перенос в облачное S3-хранилище снижает нагрузку на сервер на 40% и ускоряет загрузку страниц каталога в 2–3 раза. Мы настраиваем облачное хранилище под ключ: от создания сервисного аккаунта до подключения CDN. Наш опыт включает более 50 проектов для интернет-магазинов и корпоративных порталов. Устраняем эти проблемы за 2–3 дня, гарантируя совместимость с любыми компонентами Битрикса. Стоимость хранения 1 ГБ в Яндекс Object Storage — от $1–1 в месяц, что в несколько раз дешевле выделенного дискового массива.

Параметры подключения

Endpoint Яндекс Object Storage: https://storage.yandexcloud.net. Регион: ru-central1. Формат публичного URL: https://[bucket].storage.yandexcloud.net/[key] — virtual hosted style.

В /bitrix/admin/main_cloud_storage.php укажите:

  • Тип хранилища: Amazon S3 (совместимо)
  • Endpoint: https://storage.yandexcloud.net
  • Region: ru-central1
  • Access Key: идентификатор статического ключа из консоли Яндекс.Облако
  • Secret Key: секретный ключ
  • Bucket: имя бакета

Создание сервисного аккаунта и ключей — в консоли Яндекс.Облако: IAM → Сервисные аккаунты → Создать → Выдать роль storage.editor на бакет → Создать статический ключ доступа.

Настройка S3-совместимого хранилища

Модуль main.cloudstorages использует AWS SDK PHP. При подключении к Яндекс Object Storage SDK по умолчанию может применить неверную версию подписи. Яндекс поддерживает только Signature Version 4 (SigV4), а SDK для кастомных endpoint иногда пытается использовать SigV2. Без явного указания подписи авторизация не проходит. Исправление — добавить параметр 'signature' => 'v4' в конфигурацию клиента:

$s3Client = new \Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'ru-central1', 'endpoint' => 'https://storage.yandexcloud.net', 'signature' => 'v4', 'credentials' => [ 'key' => $accessKey, 'secret' => $secretKey, ], ]); 

Если интерфейс модуля не позволяет передать этот параметр, мы редактируем класс-провайдер (с бэкапом) или используем наследование. Такой подход проверен на десятках проектов.

Исправление ошибок подписи SigV4

В официальной документации 1С-Битрикс нет готового решения. На практике помогает патч /bitrix/modules/main/lib/cloudstorages/amazon.php: в конструкторе клиента добавить 'signature' => 'v4'. Либо переопределить метод getS3Client() в наследуемом классе. Источник: документация Яндекс Object Storage — SigV4 обязателен.

Настройка CORS для загрузок

При использовании presigned URL для прямой загрузки в Object Storage браузеры блокируют запросы без CORS-заголовков. В консоли Яндекс.Облако, раздел "CORS", добавьте правило:

<CORSConfiguration> <CORSRule> <AllowedOrigin>https://example.com</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedHeader>*</AllowedHeader> <MaxAgeSeconds>3600</MaxAgeSeconds> </CORSRule> </CORSConfiguration> 

Без этой настройки TinyMCE и кастомные формы загрузки выдадут ошибку. Мы включаем CORS-конфигурацию в стандартный набор работ.

Lifecycle-политики для временных файлов

Яндекс Object Storage поддерживает автоматическое удаление файлов старше N дней. Это полезно для папок /upload/tmp/ и /upload/import/, которые Битрикс не чистит. Пример правила:

Пример lifecycle-политики в JSON
{ "Rules": [{ "ID": "cleanup-tmp", "Status": "Enabled", "Filter": { "Prefix": "upload/tmp/" }, "Expiration": { "Days": 7 } }] } 

Настройка через консоль или API. Экономия места — до 30% в месяц на типовом магазине. Для магазина с 20 ГБ временных файлов это экономия около $5–8 в месяц при хранении в облаке.

Настройка CDN

Яндекс Cloud CDN интегрируется с Object Storage за пару минут: создаёте CDN-ресурс с источником-бакетом, указываете домен CDN в опции cloud_storage_cdn_url. После этого Битрикс формирует публичные URL через CDN, а файлы раздаются с ближайшей точки присутствия. Параметр в коде:

\Bitrix\Main\Config\Option::set('main', 'cloud_storage_cdn_url', 'https://cdn.example.com'); 

Запись файлов идёт напрямую в бакет, чтение — через CDN. Для ресайзов изображений это даёт прирост скорости загрузки страниц каталога в 2–3 раза. Для российских проектов Яндекс CDN предлагает лучшие показатели latency по сравнению с CloudFront — задержки ниже на 30% благодаря дата-центрам в Москве и Санкт-Петербурге.

Что входит в настройку под ключ

Мы выполняем полный цикл: создание сервисного аккаунта, настройку CORS, патч подписи, установку lifecycle-политик, интеграцию CDN. Предоставляем документацию по конфигурации и бэкап исходных файлов. Гарантируем сохранность данных и работу после обновлений Битрикса.

Параметр Яндекс Object Storage AWS S3
Endpoint storage.yandexcloud.net s3.amazonaws.com
Регион ru-central1 (один) us-east-1 и др.
Подпись Только SigV4 SigV2/V4
CORS Обязательна для браузера Аналогично
CDN Яндекс Cloud CDN CloudFront
Показатель Без CDN С CDN
Время загрузки изображения (500 КБ) ~1.2 с ~0.4 с
Нагрузка на сервер 100% до 20%
Стоимость трафика (за 1 ТБ) ~$9–13 ~$5–8

Свяжитесь с нами для консультации — мы настроим Object Storage за 2–3 дня, включая выходные. Закажите настройку и получите надёжное облачное хранилище с CDN, которое ускорит ваш магазин и сэкономит бюджет.