Подключение сайта к хранилищу на Яндекс Облаке

Author Автор: Роман Чернышов    Опубликовано: 18 декабря 2019

Подключение сайта к хранилищу на Яндекс ОблакеПриветствую друзья! Недавно я завершил работу по интеграции сайта своего клиента с хранилищем(Object Storage) на Яндекс Облаке. Так как на сайте планируется размещение большого количества изображений пользователями, было принято решение воспользоваться облачными технологиями(хранилищем), для размещения на нем всех файлов изображений. Для этого в CMS системе сайта были переписаны все скрипты, отвечающие за загрузку, сохранение и удаление изображений. Объем работ был не таким большим, а благодаря API и AWS SDK for PHP от Amazon все прошло достаточно гладко. Далее обо всем подробнее.

Преимущества

Что мы получили при переходе на хранилище в облаке?

  1. Надежность. Вероятность, что облако рухнет так как может рухнуть выделенный или VDS сервер(по разным причинам, от технического сбоя, до некомпетентных действий администратора) — гораздо меньше. Бекапы мы все равно делаем, но с облаком надежность сохранности данных возрастает на порядок.
  2. Доступность. При больших нагрузках(посещаемости) на сайт, все изображения загружаются с облака и тем самым существенно снижается нагрузка на сервер. Например один мой сайт содержит около 300 тысяч изображений, общим объемом более чем в 2 ТБ. Облако, для такого проекта это своего рода спасение, благодаря ему удается ежемесячно экономить приличную сумму денег. Скорость доступа к данными, рассчитывается в миллисекундах (холодное хранилище), что очень быстро.
  3. Масштабируемость. Покупка дополнительного места в облаке, при необходимости. Хорошая экономия на неиспользуемых ресурсах, которые есть в избытке при аренде выделенного сервера или реже того же VDS.
  4. Беззаботность. Все данные хранящиеся в облаке шифруются, доступом к ним можем управлять только мы.
  5. Стоимость. Гигабайты в облаке, обходятся нам дешевле, нежели чем, гигабайты на выделенном сервере. Стоимость одного ТБ в облаке нам обходиться в ~850руб (холодное хранилище), при использовании HDD на выделенном сервере, стоимость возрастает вдвое.

AWS SDK for PHP

Для работы с облаком, а именно сохранением и удалением данных из него, при работе из PHP скриптов, я использую AWS SDK for PHP. Для подключения к хранилищу, нужно создать Бакет, а также «Ключ доступа» и получить данные доступа(ключ и секрет). Затем данные доступа прописать в скрипте и можно работать.

нужно создать Бакет

Пример подключения к облаку:

require_once('lib/vendor/autoload.php');
 
$sharedConfig = [
	'credentials' => [
	  'key'      => 'КЛЮЧ',
  	  'secret'   => 'СЕКРЕТ',
	],
	'region'   => 'us-east-1',
	'endpoint' => '//storage.yandexcloud.net',
	'version'  => 'latest',
];
 
$sdk = new Aws\Sdk($sharedConfig);
$s3Client = $sdk->createS3();

Пример записи в облаго:

$s3Client->putObject([
        'Bucket' => 'Название бакета',
        'Key'    => 'Путь к файлу для сохранения',
        'Body'   => fopen('Путь к локальному файлу', 'r')
]);

Пример удаления из облака:

$s3Client->deleteObject([
        'Bucket' => 'Название бакета',
        'Key'    => 'Путь к файлу',
]);

Некоторые другие интересные облачные решения

  • Yandex Compute Cloud — Виртуальные машины и диски
  • Yandex Virtual Private Cloud — Управление сетями в облаке
  • Yandex Load Balancer — Сетевые балансировщики нагрузки
  • Yandex Instance Groups — Группы виртуальных машин
  • Yandex Container Registry — Управление Docker-образами
  • Yandex Monitoring — Сбор и визуализация метрик
  • Yandex DDoS Protection — Защита от DDoS-атак
  • Yandex Managed Service for MongoDB — Управление базой данных MongoDB
  • Yandex Managed Service for MySQL® — Управление базой данных MySQL
  • Yandex Cloud Functions — Запуск вашего кода в виде функции
  • Yandex SpeechKit — Комплекс технологий распознавания и синтеза речи
  • Yandex Translate — Машинный перевод с поддержкой более 90 языков
  • Yandex Vision — Анализ изображений с помощью моделей машинного обучения

Заключение

С Яндекс Облаком может интегрироваться любой сайт, работающий на любой CMS, преимущества такой интеграции очевидны, не малую роль играет стоимость такого решения — выгода, которую оценит как бизнес так и частное лицо. Если вам потребуется помощь в интеграции с облачным хранилищем от Яндекса или любым другим облачным сервисом, обращайтесь, буду рад помочь вам!

5 комментариев to “Подключение сайта к хранилищу на Яндекс Облаке”

  • Виктор 05.03.2021 в 7:01 пп

    Очень интересно и содержательно. Я так понимаю ваш сайт находится на стороннем хостинге, а облако вы просто подключает для размещения контента. Скажите, а не лучше сразу весь сайт в облако перенести, и ли создавать сразу в облаке. В плане сделать сайт на Ворд Пресс, типа маркетплейса, с возможностью загрузки цифрового контента с дальнейшей продажей, пользователями сайта. Нужен ресурс для этого. Что порекомендуете Yandex object storage, selectel…или что то ещё?!

    • Роман Чернышов 05.03.2021 в 7:39 пп

      Добрый день, Виктор! 1) Вы поняли верно, сайт находится на хостинге с поддержкой PHP, баз данных и прочего, а медиа контент находиться на стороннем облаке от Яндекс. 2) Сразу весь сайт в облако, в данном контексте(в нашем случае) не получиться, мы используем только Object Storage — так как нам такая схема выгоднее. Но, вообще разумеется это возможно с помощью Yandex Cloud. 3) Для размещения сайта Yandex object storage не подходит, как вариант смотрите в сторону Yandex Cloud или Selectel Cloud Servers(почему бы и нет). Но если проект не большой(на начальных этапах развития), пользователей мало, то посмотрите в сторону обычного шаред-хостинга. Думаю для старта это самый оптимальный вариант.

      • Виктор 05.03.2021 в 7:53 пп

        Да, я знаю что, storage для других целей. Будем делать в cloud. Считаю лучше сразу создавать в облаке, чем потом когда нужно будет расти,а я на это рассчитываю, не пришлось переезжать. Тем более для начала можно взять не очень мощную систему за 200 -300 р в месяц.

  • Леонид 26.09.2021 в 11:33 дп

    Добрый день! А где взять файл
    ‘lib/vendor/autoload.php’ ?

    • Роман Чернышов 27.09.2021 в 2:19 пп

      Добрый день, подключение через lib/vendor/autoload.php возможно при установки библиотеки AWS SDK for PHP через Composer, именно он создает данный файл.
      Установка через Composer(который должен быть установлен на вашем ПК):
      composer require aws/aws-sdk-php

Оставить комментарий

Автор блога
Роман Чернышов
Веб-разработчик,
Full Stack
Senior, Architect
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Оформить предзаказ
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка