Данные в S3-хранилище хранятся в едином формате: в виде объектов, помещенных в бакеты (контейнеры).
Объекты — это ваши файлы и данные в любом формате. Бакет — это хранилище объектов. Чтобы разместить файл в S3-хранилище, его необходимо поместить в бакет.
Бакеты могут быть приватными или публичными и отличаются способом доступа к ним. Получить доступ к объектам в приватном контейнере может только авторизованный пользователь (администратор).
Пользователь хранилища — один, и ему доступны все его бакеты с полными правами. Access Key и Secret Access Key для разных бакетов в рамках одного аккаунта совпадают. На текущий момент нет возможности настроить какие-либо ограничения видимости бакетов (например, отображать в Cyberduck только конкретный из них).
В настоящий момент мы поддерживаем два кластера S3, которые немного отличаются доступными возможностями и методами. Если какой-то функционал, описанный в документации, недоступен для вашего аккаунта, но необходим вам для работы — мы можем перевести ваш аккаунт на другой кластер, по запросу в поддержку.
Существует только одно ограничение — на объем занятого места. Этот объем определяется выбранным тарифом для каждого бакета.
Никакие иные параметры (количество бакетов, объем трафика, количество запросов и др.) не ограничиваются и не тарифицируются. Вы оплачиваете только ежемесячную фиксированную стоимость каждого бакета согласно выбранному тарифу.
Чтобы создать бакет, нажмите «Создать» или «Добавить» в разделе «Хранилище S3». Укажите необходимые параметры.
1. Имя бакета можно оставить по умолчанию или указать свое. Для работы по протоколу S3 имя бакета должно соответствовать правилам, заданным Amazon.
2. Выберите нужный тариф и размер хранилища.
3. Выберите тип бакета. Тип можно будет изменить в дальнейшем.
4. Выберите нужный проект.
5. Нажмите «Создать».
Бакет будет создан мгновенно и отобразится в панели управления.
Теперь вы можете загрузить файлы в бакет — с помощью Cyberduck, объектного менеджера или другого способа подключения.
Оба кластера нашего хранилища S3 поддерживают доступ через Amazon S3 API и Swift API. При этом, для одного из кластеров реквизиты подключения для S3 и Swift совпадают. Для другого кластера реквизиты разделены, и в этом случае в настройках бакета в панели будут отдельно отображены «Параметры Swift».
Подключение к хранилищу и управление файлами (загрузка, удаление, изменение) может быть реализовано разными способами:
Один из наших кластеров хранилища (эндпойнт s3.timeweb.com) поддерживает только AWS Signature v4, второй (эндпойнт s3.timeweb.cloud) — версии v2 и v4. Клиент S3 может использовать другую версию Signature, поэтому возможны ошибки подключения. Например, в клиенте S3 Browser можно выставить в настройках использование AWS Signature v4 вместо v2.
Реквизиты подключения доступны в блоке «Параметры S3» в настройках бакета.
В зависимости от кластера, URL может быть s3.timeweb.com
или s3.timeweb.cloud
. Проверить корректные ссылки всегда можно в вашей панели в настройках бакета.
Для доступа к файлам используются пути вида:
https://s3.timeweb.com/имя_бакета/имя_файла
https://s3.timeweb.cloud/имя_бакета/имя_файла
Либо, если файл размещен внутри директории в бакете:
https://s3.timeweb.com/имя_бакета/имя_директории/имя_файла
https://s3.timeweb.cloud/имя_бакета/имя_директории/имя_файла
К файлам в публичных бакетах также можно обращаться, используя модель адресации Virtual-hosted style, в этом случае название бакета входит в имя хоста:
https://имя_бакета.s3.timeweb.com/имя_файла
https://имя_бакета.s3.timeweb.com/имя_директории/имя_файла
https://имя_бакета.s3.timeweb.cloud/имя_файла
https://имя_бакета.s3.timeweb.cloud/имя_директории/имя_файла
Вы также можете обращаться к бакету по своему домену, привязав его.
Получить доступ к файлам в публичном бакете можно через браузер или другой HTTP-клиент, обратившись непосредственно по такой ссылке.
Доступ к файлам в приватном бакете также может быть организован через HTTP, но дополнительно потребуется подпись для аутентификации, которая добавляется к запросу в виде HTTP-заголовков. Подробнее см. Описание принципов работы с S3.
Скорость загрузки файлов в бакет или из бакета составляет 1 Гбит/сек.
Вы можете управлять файлами в бакете прямо в браузере, используя объектный менеджер в панели управления — он доступен на странице бакета на вкладке «Объекты».
С помощью объектного менеджера вы можете загружать файлы в бакет, удалять их, переименовывать, а также создавать директории.
При загрузках больших объектов будет использоваться составная загрузка (multipart upload), которая снижает вероятность того, что процесс загрузки прервется до его завершения. При этом в бакете будет создан объект (манифест), который содержит ссылки на все загруженные сегменты.
В одном из кластеров хранилища S3 сегменты хранятся в отдельном пространстве и доступны на вкладке «Составные загрузки». В другом — на вкладке «Объекты»; вкладки «Составные загрузки» в панели управления при этом не будет.
Чтобы не указывать имя бакета при обращении к файлам, вы можете привязать к бакету домен.
В этом случае для обращения к файлам вместо путей:
https://s3.timeweb.com/имя_бакета/имя_файла
https://s3.timeweb.com/имя_бакета/имя_директории/имя_файла
https://s3.timeweb.cloud/имя_бакета/имя_файла
https://s3.timeweb.cloud/имя_бакета/имя_директории/имя_файла
вы сможете использовать пути:
https://ваш.домен.tld/имя_файла
https://ваш.домен.tld/имя_директории/имя_файла
Обратите внимание, что при прямом обращении по домену (https://ваш.домен.tld/
) не будет отображаться листинг файлов или какая-либо другая индексная страница. Привязка домена подразумевает, что в URL будет указан путь к конкретному файлу.
Для привязки необходимо использовать домен третьего или более уровня, например, timeweb.mydomain.com
.
Если для домена включено проксирование через Cloudflare, отключите его перед привязкой домена. Подождите 5-10 минут, чтобы изменения вступили в силу, привяжите домен по инструкции ниже, после чего проксирование можно снова подключить.
Порядок действий:
s3.timeweb.com
либо s3.timeweb.cloud
, в зависимости от кластера хранилища.Если оставить отмеченной галку «Выпустить SSL-сертификат», мы автоматически сгенерируем и установим на указанный домен бесплатный SSL Let's Encrypt и будем автоматически его продлевать за неделю до истечения.
Перенос данных из сторонних S3-совместимых хранилищ можно выполнить автоматически. Для этого в бакете, в который нужно перенести объекты, перейдите на вкладку «Перенос данных» и введите реквизиты от стороннего хранилища. Нажмите «Начать перенос».
Данные будут скопированы в ваш бакет в Timeweb Cloud.
Вы можете увеличить тариф бакета, если вам потребуется больше пространства для хранения данных. Изменить тариф в меньшую сторону невозможно.
Для смены тарифа кликните на нужный бакет в панели управления, чтобы открыть настройки, и нажмите «Изменить размер хранилища».
Выберите новый тариф и сохраните изменения.
Объем пространства увеличится сразу же.
Любой контейнер со всем содержимым можно скачать с помощью Cyberduck.
Контейнер и все файлы в нем будут загружены на ваше устройство в виде директории.
Вы можете просмотреть, какие действия выполнялись с бакетом, на вкладке «История».
Логируются следующие события:
Будет удален бакет и все файлы в нем.
Для удаления кликните на три точки на вкладке Бакеты:
Либо на значок удаления в настройках бакета:
Во всплывающем окне введите имя бакета или код подтверждения, в зависимости от ваших настроек.
Поддерживается ли s3 lifecycle (versioning, expiration rules)? В целом было бы здорово видеть на сайте документацию по тому, какой функционал поддерживается, а какой нет. Сейчас, к сожалению, приходится это определять методом тыка и общения с тех. поддержкой.
Добрый день! Да, поддерживается.
Вскоре мы добавим обновленную документацию по S3, в которой будет подробно расписан весь функционал 🙌
Пожалуйста, добавьте в Документации по привязке домена к S3, что в случае если у домена настроено проксирование в CloudFlare, то сначала нужно проксирование отключить, после через некоторое время (1 - 10 минут) домен добавить в S3, а после можно снова проксирование включить обратно. Все будет работать.
С включенным проксированием домен добавить в S3 не получится.
Спасибо за уточнение! Добавили эту информацию в статью.