intermediate

S3

Храните долговечные объекты — загрузки, assets, бэкапы, статику — с явной bucket policy, lifecycle и допущениями по consistency.

S3 — долговечное объектное хранилище для загрузок, статики, бэкапов и артефактов сборки. Имена bucket глобально уникальны; объекты адресуются ключом. Strong read-after-write consistency для всех операций — проектируйте upload и listing с учётом этого.

| Механизм | Назначение | |----------|------------| | Presigned URL | Прямая загрузка/скачивание из браузера или мобилки | | Bucket policy | Правила между аккаунтами и публичный доступ | | Lifecycle rule | Переход в IA/Glacier или удаление старых объектов | | SSE-KMS / SSE-S3 | Шифрование at rest |

Публичный доступ блокируйте по умолчанию. Статику фронтенда отдавайте через CloudFront с OAI/OAC, а не через открытый bucket. В Node.js API генерируйте короткоживущие presigned URL вместо проксирования больших файлов через Express.

На интервью: модель консистентности, versioning, multipart upload, event notifications в Lambda/SQS и защита от случайной публичной отдачи.

Типовые ошибки: публичный `ACL` на пользовательские загрузки; долгоживущие presigned URL; listing миллионов ключей без пагинации; S3 как «база» с частыми мелкими обновлениями.

Компромисс — дёшевое сверхнадёжное хранилище против отсутствия POSIX, гибких запросов и блокировок без дополнительных паттернов.

Чеклист:

  • Bucket приватный; статика через CloudFront.
  • Шифрование объектов и IAM по least privilege.
  • Lifecycle для стоимости и retention.
  • Presign upload/download; проверка типа и размера на сервере.