О бакетах
Представьте себе бакет как вашу личную папку в облачном хранилище — это специальное пространство, где вы можете хранить свои данные. Каждый бакет имеет уникальное имя, которое используется для доступа к вашим файлам через S3.
Как устроены бакеты?
В бакетах данные хранятся в виде объектов. Вы можете организовать свою информацию так, как вам удобно:
- Создать несколько бакетов для разных типов данных;
- Использовать папки внутри одного бакета;
- Настроить бакет для размещения статичного сайта.
Создать бакет очень просто — вы можете сделать это через:
- Консоль управления;
- Командную строку (CLI);
- Terraform;
- API;
- Популярные инструменты для работы с Amazon S3.
Выбираем имя для бакета
Имя бакета — это как адрес вашего хранилища. Например: https://storage.turbocloud.ru/мой-бакет
Несколько простых правил для имени:
- Длина от 3 до 63 символов;
- Можно использовать латинские буквы, цифры, дефисы и точки;
- Начинаться и заканчиваться должно буквой или цифрой;
- Не должно выглядеть как IP-адрес.
Совет: Если планируете использовать бакет для сайта, избегайте точек в имени — это поможет избежать возможных конфликтов.
Безопасное соединение HTTPS
Мы заботимся о безопасности ваших данных, поэтому поддерживаем HTTPS-соединение.
Настройте бакет под свои нужды
Вы можете:
- Ограничить максимальный размер;
- Выбрать класс хранилища по умолчанию;
- Настроить хостинг сайта;
- Включить шифрование;
- Настроить правила жизненного цикла данных.
Доступ к вашим данным
Для работы внутри облака: Вы можете настроить доступ к бакетам напрямую из вашей облачной сети — быстро и безопасно, без выхода в интернет.
Для публичного доступа: Вы можете открыть доступ к данным для других пользователей, но помните — используйте эту возможность осторожно, только когда действительно необходимо.
Отслеживайте использование
Мы автоматически собираем статистику по вашим бакетам, которую вы можете просматривать:
- В консоли управления;
- Через сервисы мониторинга;
- С помощью командной строки.
Что важно знать при работе с бакетами
- Статистика обновляется с задержкой до 20 минут;
- Переименовать бакет нельзя;
- Вложенные бакеты не поддерживаются;
- Удалить можно только пустой бакет;
- После удаления имя бакета может быть недоступно некоторое время.
Совет: Если вы ограничили размер бакета, имейте в виду, что после освобождения места может потребоваться время для восстановления доступа на запись.
Бакеты — это удобный инструмент для организации ваших данных в облаке. Не бойтесь экспериментировать с настройками и находить оптимальный способ работы для ваших задач!
Версионирование бакета
Версионирование бакета — это ваша надежная защита от случайных ошибок и сбоев! Представьте, что у каждого файла в хранилище есть своя история изменений, которую можно просматривать и восстанавливать в любой момент.
Что такое версионирование?
Это возможность хранить полную историю изменений всех объектов в бакете. Каждая версия — это полноценная копия файла, которая сохраняется в S3.
Зачем это нужно?
- Защита от случайного удаления или изменения файлов;
- Страховка от сбоев в работе приложений;
- Полная история изменений ваших данных.
Как работает версионирование?
Версионирование включается для всего бакета сразу и начинает работать для всех объектов внутри него.
До и после включения версионирования
До включения:
- У всех объектов идентификатор версии
null.
После включения:
- Каждому новому объекту присваивается уникальный
version_id; - Вы можете работать с конкретной версией объекта через этот идентификатор.
Что происходит при приостановке?
- Существующие версии сохраняют свои
version_id; - Новые объекты получают версию
null; - Если версия
nullуже существует — она перезаписывается.
Работа с версиями
При перезаписи файла:
- Создается новая версия с тем же именем;
- Генерируется новый случайный
version_id; - Предыдущая версия сохраняется в истории.
Для доступа к предыдущей версии:
- Используйте идентификатор объекта;
- Укажите нужный
version_id.
Восстановление данных:
- Предыдущие версии можно восстанавливать;
- Процесс восстановления прост и интуитивно понятен.
Важные моменты
Обратите внимание: Операция включения версионирования необратима! Вы не можете полностью отключить версионирование, но можете приостановить создание новых версий.
При удалении:
- Версия помечается специальным маркером удаления;
- Удаленные версии не занимают место в хранилище.
Очистка истории
Со временем в бакете может накопиться много версий. Вы можете очистить их:
- Вручную — точечное удаление ненужных версий;
- Автоматически — настройте правила жизненного цикла объектов.
Преимущества версионирования
- Надежность — ваши данные под защитой от случайных изменений;
- Гибкость — работайте с любой версией файла в любой момент;
- Простота — интуитивно понятный механизм работы;
- Безопасность — восстановление данных в один клик.
Версионирование — это ваш надежный помощник в работе с облачным хранилищем. Настройте его один раз и работайте спокойно, зная что ваши данные в безопасности!
Логи бакета
Логи S3 сохраняются в JSON-формате. Одна запись в логах равна одному запросу к бакету.
Поля журнала запросов S3
Эти поля помогают понять, кто, когда и как взаимодействовал с объектами и бакетами в хранилище.
| Поле | Тип | Описание |
|---|---|---|
bucket | String | Имя бакета, с которым выполнялась операция. |
bytes_received | Int64 | Размер запроса (входящих данных) в байтах. |
bytes_send | Int64 | Размер ответа (исходящих данных) в байтах. |
handler | String | Метод запроса в формате REST.<HTTP-метод>.<субъект>. |
http_referer | String | Адрес страницы, с которой был отправлен запрос. |
ip | String | IP-адрес клиента, выполнившего запрос. |
method | String | HTTP-метод, использованный в запросе (например, GET, PUT, DELETE). |
object_key | String | Ключ объекта в бакете, закодированный через URL. |
protocol | String | Версия протокола передачи данных (например, HTTP/1.1). |
range | String | Заголовок HTTP, задающий диапазон байт для частичной загрузки. |
requester | String | Идентификатор пользователя, отправившего запрос. |
request_args | String | Аргументы, переданные в URL-запросе. |
request_id | String | Уникальный идентификатор запроса. |
request_path | String | Полный путь, по которому был выполнен запрос. |
request_time | Int64 | Время обработки запроса в миллисекундах. |
scheme | String | Тип протокола передачи данных: http или https. |
ssl_protocol | String | Версия протокола безопасности (например, TLSv1.2). |
status | Int64 | HTTP-код ответа (например, 200, 403, 404). |
storage_class | String | Класс хранилища, в котором хранится объект. |
timestamp | String | Время выполнения операции в формате ГГГГ-ММ-ДДTЧЧ:ММ:ССZ. |
user_agent | String | Приложение или браузер, выполнивший запрос. |
version_id | String | Версия объекта (если включено версионирование). |
vhost | String | Виртуальный хост, на который был направлен запрос. |
Методы запросов к бакету
Эти методы определяют, что именно делает клиент, обращаясь к бакету: получает список объектов, загружает данные, управляет настройками и так далее.
| HTTP-метод | Субъект | Описание |
|---|---|---|
GET | SERVICE | Показывает список всех доступных бакетов. |
GET | LOCATION | Возвращает регион, в котором размещен бакет. |
PUT | BUCKET | Создает новый бакет. |
HEAD | BUCKET | Отображает метаданные бакета. |
GET | BUCKET | Показывает список объектов (устаревшая версия). |
GET | BUCKET_V1EXT | Расширенная устаревшая версия вывода списка объектов. |
GET | BUCKET_V2 | Актуальная версия получения списка объектов. |
DELETE | BUCKET | Удаляет бакет. |
OPTIONS | BUCKET | Проверяет возможность CORS-запросов. |
GET | BUCKETVERSIONS | Отображает метаданные всех версий объектов. |
GET | VERSIONING | Показывает состояние версионирования бакета. |
PUT | VERSIONING | Включает или приостанавливает версионирование. |
PUT | BUCKET_ACL | Загружает список управления доступом для бакета. |
GET | BUCKET_ACL | Отображает список управления доступом для бакета. |
PUT | BUCKET_CORS | Настраивает CORS для бакета. |
GET | BUCKET_CORS | Показывает текущие настройки CORS. |
DELETE | BUCKET_CORS | Удаляет конфигурацию CORS. |
PUT | BUCKET_LIFECYCLE | Добавляет или обновляет правила жизненного цикла объектов. |
GET | BUCKET_LIFECYCLE | Показывает активные правила жизненного цикла. |
DELETE | BUCKET_LIFECYCLE | Удаляет правила жизненного цикла объектов. |
PUT | BUCKET_ENCRYPTION | Включает шифрование данных бакета. |
GET | BUCKET_ENCRYPTION | Показывает информацию о шифровании. |
DELETE | BUCKET_ENCRYPTION | Отключает шифрование бакета. |
PUT | BUCKET_WEBSITES | Настраивает хостинг статического сайта. |
GET | BUCKET_WEBSITES | Показывает настройки хостинга. |
DELETE | BUCKET_WEBSITES | Удаляет конфигурацию хостинга. |
GET | BUCKET_LOGGING | Отображает настройки логирования. |
PUT | BUCKET_LOGGING | Включает или изменяет параметры логирования. |
PUT | BUCKETPOLICY | Применяет политику доступа к бакету. |
GET | BUCKETPOLICY | Показывает текущую политику доступа. |
DELETE | BUCKETPOLICY | Удаляет политику доступа. |
PUT | BUCKET_TAGGING | Добавляет или изменяет метки бакета. |
GET | BUCKET_TAGGING | Показывает текущие метки бакета. |
DELETE | BUCKET_TAGGING | Удаляет метки бакета. |
PUT | OBJECT | Загружает объект в бакет. |
POST | OBJECT | Загружает объект через HTML-форму. |
POST | OBJECT_RESTORE | Восстанавливает объект из архива (не поддерживается). |
PUT | OBJECT_COPY | Копирует объект внутри бакета. |
DELETE | OBJECT | Удаляет объект. |
DELETE | MULTIPLE_OBJECTS | Удаляет несколько объектов по списку ключей. |
HEAD | OBJECT | Показывает метаданные объекта. |
GET | OBJECT | Получает объект из бакета. |
OPTIONS | OBJECT | Проверяет возможность CORS-запроса к объекту. |
GET | OBJECT_ACL | Показывает ACL для объекта. |
PUT | OBJECT_ACL | Загружает ACL для объекта. |
SELECT | OBJECT_CONTENT | Выполняет выборку данных с помощью S3 Select. |
PUT | OBJECT_TAGGING | Добавляет или изменяет метки объекта. |
GET | OBJECT_TAGGING | Показывает метки объекта. |
DELETE | OBJECT_TAGGING | Удаляет метки объекта. |
GET | MULTIPART | Показывает список текущих составных загрузок. |
POST | INIT_MULTIPART | Инициализирует составную загрузку и возвращает ID. |
POST | COMPLETE_MULTIPART | Завершает составную загрузку. |
DELETE | ABORT_MULTIPART | Прерывает составную загрузку и удаляет ее части. |
PUT | UPLOAD_PART | Сохраняет часть объекта. |
PUT | UPLOAD_PART_COPY | Копирует часть объекта. |
GET | UPLOAD_PART | Показывает список загруженных частей объекта. |