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.

Sources

Related topics