AWSMiddleTechnical
Какие S3 storage classes есть и когда какой использовать?
S3 предлагает 8 классов хранения: Standard для горячих данных, Standard-IA/One Zone-IA для редкого доступа, три уровня Glacier для архивов и Intelligent-Tiering для непредсказуемого паттерна. Выбор зависит от частоты доступа, требований к доступности и готовности платить за извлечение.
Классы хранения S3 и когда их применять
AWS S3 предлагает несколько классов хранения, каждый из которых оптимизирован под определённый паттерн доступа. Выбор класса напрямую влияет на стоимость хранения и стоимость получения данных.
Обзор всех классов
- S3 Standard — для «горячих» данных с частым доступом. 99,99% доступности, данные хранятся минимум в 3 зонах доступности. Наивысшая цена за ГБ хранения, нет платы за извлечение.
- S3 Intelligent-Tiering — автоматический перенос объектов между тирами в зависимости от частоты обращений. Подходит, когда паттерн доступа непредсказуем.
- S3 Standard-IA (Infrequent Access) — данные доступны быстро, но нужны редко. Дешевле Standard по хранению, но есть минимальный период хранения (30 дней) и плата за каждый GET.
- S3 One Zone-IA — то же, что Standard-IA, но данные хранятся только в одной AZ. Ещё дешевле, но без избыточности по зонам.
- S3 Glacier Instant Retrieval — архивные данные с немедленным доступом (миллисекунды). Минимальный период хранения 90 дней.
- S3 Glacier Flexible Retrieval — архив с задержкой извлечения от 1 до 12 часов. Стоимость хранения очень низкая, минимальный период 90 дней.
- S3 Glacier Deep Archive — самый дешёвый класс. Извлечение занимает 12–48 часов, минимальный период хранения 180 дней. Для данных, которые почти никогда не нужны.
- S3 Express One Zone — ультранизкая латентность (одна AZ), предназначен для высокопроизводительных вычислений, ML-инференса.
Пример: настройка Lifecycle Policy через AWS CLI
# Создаём JSON с правилами жизненного цикла
cat > lifecycle.json << 'EOF'
{
"Rules": [
{
"ID": "move-to-ia-then-glacier",
"Status": "Enabled",
"Filter": { "Prefix": "logs/" },
"Transitions": [
{ "Days": 30, "StorageClass": "STANDARD_IA" },
{ "Days": 90, "StorageClass": "GLACIER_IR" },
{ "Days": 365, "StorageClass": "DEEP_ARCHIVE" }
],
"Expiration": { "Days": 2555 }
}
]
}
EOF
aws s3api put-bucket-lifecycle-configuration \
--bucket my-bucket \
--lifecycle-configuration file://lifecycle.json
Пример: указание класса при загрузке объекта
# Загрузить объект сразу в Glacier Instant Retrieval
aws s3 cp report.pdf s3://my-bucket/archive/report.pdf \
--storage-class GLACIER_IR
# Загрузить объект в One Zone-IA
aws s3 cp thumbnail.jpg s3://my-bucket/thumbs/thumbnail.jpg \
--storage-class ONEZONE_IA
Сравнительная таблица по сценариям
- Пользовательские медиафайлы (активные) → Standard
- Бэкапы баз данных (нужны изредка) → Standard-IA или Glacier Instant
- Логи за прошлые годы → Glacier Deep Archive
- Thumbnails, кэш (некритичная потеря) → One Zone-IA
- ML-датасеты, высокочастотный доступ → Express One Zone
- Непредсказуемый паттерн → Intelligent-Tiering
Подводные камни
- Минимальные периоды хранения. Если удалить объект из Standard-IA раньше 30 дней, AWS всё равно спишет за 30 дней. В Glacier Deep Archive — за 180 дней. Это особенно дорого на коротких объектах.
- Минимальный размер объекта. Standard-IA и One Zone-IA берут плату как минимум за 128 КБ. Хранить тысячи мелких файлов в этих классах невыгодно.
- Плата за GET при IA и Glacier. Если данные внезапно понадобились часто, расходы на извлечение могут превысить экономию на хранении.
- Glacier требует Restore перед чтением. Для Flexible Retrieval нельзя просто сделать GetObject — сначала нужен RestoreObject, и только через несколько часов объект станет доступен.
- One Zone-IA теряет данные при сбое AZ. AWS явно предупреждает об этом в SLA. Подходит только для данных, которые можно восстановить из другого источника.
- Intelligent-Tiering не бесплатен. За мониторинг каждого объекта берётся плата (~$0,0025 за 1000 объектов в месяц), что убивает экономию для мелких или редко изменяемых объектов.
- Lifecycle transitions не мгновенны. Переход выполняется раз в сутки, не в момент наступления условия. Не стоит рассчитывать на точность до часа.
- Express One Zone недоступен в большинстве регионов. Перед использованием необходимо проверить региональную доступность.
Common mistakes
- Выбирать storage class только по цене за GB-month.
- Использовать One Zone-IA для критичных единственных данных.
- Забывать retrieval charges и minimum storage duration.
What the interviewer is testing
- Называет основные S3 storage classes.
- Объясняет выбор по access pattern.
- Учитывает retrieval time, cost и resilience.