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; проверка типа и размера на сервере.