Объектное хранилище S3
Объектное хранилище S3 позволяет хранить любые файлы в облачном сервисе.
Хранилище S3 может быть полезно для следующих задач:
- долгосрочное хранение больших объемов данных, резервных копий или логов
- организация одновременного доступа к файлам для большого количества пользователей
- предоставление хранилища данных для сторонних сервисов, например, для CMS
Оплата объектного хранилища S3 производится из расчёта за объем загруженных данных. Пересылка данных в хранилище и из хранилища осуществляется бесплатно.
Начало работы
Чтобы активировать доступ к хранилищу, необходимо иметь на аккаунте положительный баланс в размере не менее 300 руб.
Работать с сервисом S3 можно:
- через веб-интерфейс
- с помощью утилит доступа к хранилищу (консольных или с графическим интерфейсом)
- с использованием различных библиотек для языков программирования, предоставляющих доступ к хранилищу по протоколу S3
Работа с S3 через Личный кабинет и менеджер файлов
Чтобы получить доступ к хранилищу S3 через веб-интерфейс, выполните следующие действия:
- Создайте пользователя: Личный кабинет → страница Хранилище S3 → Создать пользователя
- Получите ключи доступа: Личный кабинет → страница Хранилище S3 → Пользователи → Доступы
- Подключитесь к хранилищу через файловый менеджер, например, с помощью утилиты Cyberduck
Пример. Подключение к хранилищу на примере утилиты Cyberduck:
- Откройте окно подключения по кнопке «Новое подключение»
- Выберите тип подключения: Amazon S3
- Укажите параметры для подключения:
- Сервер: storage.clo.ru
- Порт: 443
- Access Key ID — ключ пользователя
- Secret Access Key — секретный ключ пользователя
Теперь вы подключились к хранилищу S3 с помощью утилитаы Cyberduck. Можете создавать бакеты и закачивать файлы.
Работа с S3 через публичный API
Для подключения к хранилищу S3 с использованием утилит или библиотек программного обеспечения выполните следующие действия:
- Создать токен для работы с Public API
- Получите ID проекта
- Создайте пользователя для работы с хранилищем S3
- Получите ключи доступа к хранилищу S3
- Подключитесь к 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