Перейти к основному содержанию

Объектное хранилище S3

Объектное хранилище S3 позволяет хранить любые файлы в облачном сервисе.

Хранилище S3 может быть полезно для следующих задач:

  • долгосрочное хранение больших объемов данных, резервных копий или логов
  • организация одновременного доступа к файлам для большого количества пользователей
  • предоставление хранилища данных для сторонних сервисов, например, для CMS

Оплата объектного хранилища S3 производится из расчёта за объем загруженных данных. Пересылка данных в хранилище и из хранилища осуществляется бесплатно.

Начало работы

Чтобы активировать доступ к хранилищу, необходимо иметь на аккаунте положительный баланс в размере не менее 300 руб.

Работать с сервисом S3 можно:

  • через веб-интерфейс
  • с помощью утилит доступа к хранилищу (консольных или с графическим интерфейсом)
  • с использованием различных библиотек для языков программирования, предоставляющих доступ к хранилищу по протоколу S3

Работа с S3 через Личный кабинет и менеджер файлов

Чтобы получить доступ к хранилищу S3 через веб-интерфейс, выполните следующие действия:

  1. Создайте пользователя: Личный кабинет → страница Хранилище S3Создать пользователя
  2. Получите ключи доступа: Личный кабинет → страница Хранилище S3ПользователиДоступы
  3. Подключитесь к хранилищу через файловый менеджер, например, с помощью утилиты Cyberduck

Пример. Подключение к хранилищу на примере утилиты Cyberduck:

  1. Откройте окно подключения по кнопке «Новое подключение»
  2. Выберите тип подключения: Amazon S3
  3. Укажите параметры для подключения:
    • Сервер: storage.clo.ru
    • Порт: 443
    • Access Key ID — ключ пользователя
    • Secret Access Key — секретный ключ пользователя

Теперь вы подключились к хранилищу S3 с помощью утилитаы Cyberduck. Можете создавать бакеты и закачивать файлы.

Работа с S3 через публичный API

Для подключения к хранилищу S3 с использованием утилит или библиотек программного обеспечения выполните следующие действия:

  1. Создать токен для работы с Public API
  2. Получите ID проекта
  3. Создайте пользователя для работы с хранилищем S3
  4. Получите ключи доступа к хранилищу S3
  5. Подключитесь к S3, указав в нужных местах доступы созданного пользователя

Дальнейшая работа с хранилищем выполняется по протоколу S3. Для этого потребуется специальное программное обеспечение или библиотеки, если доступ к хранилищу осуществляется с помощью кода. Список утилит приведен ниже.

Примечание. Возможно использовать оба вышеописанных подхода одновременно, например, создать пользователя в Личном кабинете и затем продолжить работу с этим пользователем в консоли.

Принципы работы

Тенант

Тенант позволяет различать бакеты с одинаковыми именами, созданные разными пользователями.

Имя тенанта совпадает с именем проекта, но дефисы в нём заменяются на подчёркивания.

Пользователи S3

Каждый пользователь имеет доступ к пространству хранилища, объём которого задан в лимитах пользователя.

Внимание! Имя каждого пользователя внутри проекта должно быть уникальным.

Каноничный ID пользователя — это имя конкретного пользователя в хранилище S3.

Посмотреть каноничный ID пользователя можно через Личный кабинет: Хранилище S3ПользователиДоступы. Каноничный ID пользователя формируется по схеме:

имя_тенанта$имя_пользователя

Бакеты

Файлы в хранилище размещаются в бакетах — организационных каталогах, похожих на обычные папки. В отличие от папок, бакеты имеют «плоскую» структуру, т.е. создать бакет внутри другого бакета нельзя. Бакет принадлежит пользователю, который его создал.

Список всех бакетов отображается в Личном кабинете: Хранилище S3Бакеты. Нажав расположенную здесь же кнопку Доступы, можно получить ссылку на бакет и узнать данные владельца для доступа к бакету.

Примечание. Бакет будет доступен по ссылке, только если ему заданы публичные права на чтение в ACL.

Файлы

Доступ к отдельному файлу осуществляется через его URL, который формируется по схеме:

https://storage.clo.ru/имя_тенанта:имя_бакета/имя_файла

Например:

https://storage.clo.ru/cheating_cheerful_chipmunk:new_bucket/brand_2022_03_13_13_17_39.txt

Инструменты для работы

Предпочтительно использовать следующие инструменты и библиотеки для работы с хранилищем S3:

Списки контроля доступа (ACL)

Списки контроля доступа (ACL) используются для того, чтобы обеспечить контролируемый доступ пользователей, не являющихся владельцами бакета, к бакету и содержащимся в этом бакете файлам.

Управлять ACL можно с помощью утилит доступа к хранилищу. Например, в Cyberduck для управления контроля доступом щёлкните правой кнопкой мыши на бакете или файле, в открывшемся меню выберите ИнфоПрава доступа.

Для каждого объекта в облаке пользователь может установить права доступа для любого пользователя, используя каноничный ID.

В списках контроля доступа можно указать следующие права на доступ к файлу или бакету для конкретного пользователя:

  • полный доступ
  • только чтение
  • только запись (применяется исключительно для бакетов)
  • чтение прав доступа
  • запись прав доступа

Внимание! Права на файл могут расширять права, заданные бакетом, но не могут ограничивать их. Например, если публичным сделан весь бакет, то «закрыть» отдельный файл в этом бакете не получится. Наоборот, даже если бакет является закрытым (приватным), то отдельный файл в нем можно сделать публичным.

Владелец всегда имеет полный доступ к своим бакетам и файлам в нем.

Право full_controll на бакет дает возможность удалять из него файлы даже пользователю, не являющемуся владельцем этого бакета.

Загрузка файла частями / Multipart Upload

Хранилище поддерживает режим загрузки Multipart Upload. Клиент при загрузке файла может «порезать» его на части. Это позволит возобновить загрузку при разрыве соединения.

Внимание! Загруженные части файлов не отображаются в списке файлов до полного завершения загрузки. При этом они занимают место и отнимают лимиты. В Cyberduck посмотреть незавершенные загрузки можно в списке, открывающемся из меню ОкноОчередь.

Лимиты и ограничения

Общие лимиты на проект

  • 20 бакетов
  • общий объем хранилища 5 Тб

При необходимости лимиты можно увеличить, написав запрос в службу поддержки.

Лимиты пользователя S3

Кроме общих лимитов на проект, есть возможность настроить дополнительные ограничения для каждого пользователя проекта с помощью установки лимитов. Сумма лимитов у всех пользователей проекта не может превышать общие лимиты проекта.

Существуют следующие типы лимитов пользователя хранилища S3:

  • Максимально допустимое количество бакетов у пользователя
  • Максимально допустимое количество объектов у пользователя (не учитывая бакеты)
  • Максимально допустимый объем данных пользователя
  • Максимально допустимое количество объектов в бакете
  • Максимально допустимый объем данных в бакете

Технические ограничения

  • Имя бакета не должно содержать спецсимволов
  • 10 000 — максимальный размер частей при составной (multipart) загрузке
  • Не менее 5 Мб — минимальный размер части при составной (multipart) загрузке (кроме последней)
  • Не более 5 Гб — размер файла за один put-запрос
  • 16 Кб — максимальный размер заголовков.

На данный момент объектное хранилище S3 не поддерживает следующие функции:

  • статические сайты
  • классы хранения
  • web-hooks
  • S3 CDN

Назад к базе знаний