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
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    764
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    810
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1166

При інтеграції Яндекс 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, яке прискорить ваш магазин та заощадить бюджет.