Настройка Яндекс Object Storage для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка Яндекс Object Storage для 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка Яндекс Object Storage для 1С-Битрикс

Яндекс Object Storage — S3-совместимое хранилище, но с несколькими отличиями от AWS, которые ломают стандартную S3-интеграцию Битрикса. Endpoint не amazonaws.com, регион всегда ru-central1, и URL бакета имеет собственный формат.

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

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 на бакет → Создать статический ключ доступа.

Расхождение с модулем Битрикса

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

// Класс /bitrix/modules/main/lib/cloudstorages/amazon.php
$s3Client = new \Aws\S3\S3Client([
    'version'       => 'latest',
    'region'        => 'ru-central1',
    'endpoint'      => 'https://storage.yandexcloud.net',
    'signature'     => 'v4',
    'credentials'   => [
        'key'    => $accessKey,
        'secret' => $secretKey,
    ],
]);

Если модуль не позволяет передать параметр signature через интерфейс, редактируется класс-провайдер с бэкапом — или применяется патч через наследование.

CORS для загрузки из браузера

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

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

Без CORS браузер блокирует загрузку файлов из редактора TinyMCE или кастомных форм загрузки.

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

В Яндекс Object Storage поддерживаются lifecycle-правила — автоматическое удаление файлов старше N дней. Это полезно для временных файлов импорта/экспорта, которые Битрикс складывает в /upload/tmp/ и /upload/import/. Настройка в консоли или через API:

{
    "Rules": [{
        "ID": "cleanup-tmp",
        "Status": "Enabled",
        "Filter": { "Prefix": "upload/tmp/" },
        "Expiration": { "Days": 7 }
    }]
}

Настройка CDN

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

Параметр в настройках модуля:

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

При этом запись файлов идёт напрямую в бакет, а чтение — через CDN. Для Битриксового кэша ресайзов изображений это даёт ощутимый прирост скорости загрузки страниц каталога.