Amazon Simple Storage Service
Amazon Simple Storage Service (Amazon S3) — это объектное хранилище, предоставляемое как веб-сервис компанией Amazon Web Services (AWS). Служба предназначена для хранения и извлечения любого объёма данных из любой точки сети, обеспечивая высокую масштабируемость, доступность и надёжность. Amazon S3 является одним из ключевых и наиболее ранних сервисов AWS, запущенным в 2006 году, и широко используется для резервного копирования, архивирования, хранения контента веб-сайтов, данных приложений, аналитических данных и медиафайлов.
История
Разработка Amazon S3 началась внутри Amazon.com для решения проблем масштабирования внутренней инфраструктуры хранения данных. К середине 2000-х годов компания столкнулась с необходимостью создания распределённой системы хранения, способной обслуживать миллионы пользователей и обрабатывать петабайты данных. Проект возглавил инженер Amazon Джефф Барр.
Сервис был официально запущен 14 марта 2006 года. Первоначально S3 предлагал простой интерфейс для хранения объектов (файлов) в «корзинах» (buckets) и их извлечения по HTTP. S3 стал одним из первых коммерчески успешных публичных облачных сервисов хранения, наряду с Amazon EC2 (Elastic Compute Cloud). В последующие годы функциональность S3 значительно расширилась: были добавлены версионирование объектов, управление жизненным циклом данных, шифрование на стороне сервера, интеграция с другими сервисами AWS, а также поддержка различных классов хранения, оптимизированных под частоту доступа.
Архитектура и ключевые концепции
Amazon S3 построен на архитектуре распределённой системы, где данные реплицируются и хранятся на множестве устройств в нескольких географически распределённых центрах обработки данных (зонах доступности) внутри региона AWS. Это обеспечивает высокую надёжность (99,999999999% долговечности данных) и доступность.
Объекты и корзины
Основными элементами S3 являются объекты и корзины.
- Объект — это единица хранения. Каждый объект состоит из:
- Данных (самих файлов любого типа: изображения, видео, документы, базы данных и т.д.).
- Ключа (уникального идентификатора объекта внутри корзины, по сути — имени файла или пути к нему).
- Метаданных (набора пар «имя-значение», описывающих объект, например, тип содержимого, дата загрузки, пользовательские теги).
- Корзина — это логический контейнер для хранения объектов. Корзины имеют глобально уникальные имена в рамках всего AWS. Корзина служит пространством имён для ключей объектов и позволяет настраивать политики доступа, конфигурации ведения журналов и параметры репликации.
Регионы и зоны доступности
Данные в S3 хранятся в определённом регионе AWS (например, us-east-1 (Северная Виргиния), eu-west-1 (Ирландия), ap-southeast-1 (Сингапур)). При загрузке объекта пользователь выбирает регион, в котором будет храниться его копия. Для обеспечения отказоустойчивости данные автоматически реплицируются как минимум на три устройства в разных зонах доступности внутри выбранного региона. Пользователь может также настроить кросс-региональную репликацию для дополнительной защиты или обеспечения низкой задержки для пользователей в разных частях мира.
Управление доступом
Доступ к корзинам и объектам регулируется несколькими механизмами:
- Политики корзины — JSON-документы, которые определяют, кто (пользователи, группы, роли) и какие действия (чтение, запись, удаление) может выполнять с ресурсами корзины.
- Политики управления доступом (IAM) — политики, которые привязываются к пользователям, группам или ролям AWS, определяя их права на работу с S3.
- Списки управления доступом (ACL) — устаревший, но всё ещё поддерживаемый механизм для предоставления базовых разрешений (чтение, запись) другим аккаунтам AWS.
- Подписанные URL — временные URL-адреса, которые дают доступ к конкретному объекту любому, у кого есть этот URL, на ограниченный период времени.
Классы хранения
Amazon S3 предлагает несколько классов хранения, оптимизированных под различные сценарии использования по стоимости и времени доступа:
- S3 Standard — для часто используемых данных с высокой производительностью и низкой задержкой. Подходит для контента веб-сайтов, данных приложений, аналитики.
- S3 Intelligent-Tiering — автоматически перемещает данные между уровнями доступа (частый, редкий, архивный) на основе изменения паттернов доступа, без штрафа за извлечение. Оптимален для данных с непредсказуемыми или меняющимися паттернами.
- S3 Standard-IA (Infrequent Access) — для данных, которые используются реже, но требуют быстрого доступа при необходимости. Имеет более низкую стоимость хранения, но более высокую плату за извлечение. Подходит для резервных копий и аварийного восстановления.
- S3 One Zone-IA — аналогичен Standard-IA, но данные хранятся только в одной зоне доступности. Стоимость хранения ниже, но надёжность ниже (данные теряются при выходе из строя зоны). Используется для восстанавливаемых данных.
- S3 Glacier — классы для долгосрочного архивирования. Включают:
- S3 Glacier Instant Retrieval — для архивных данных, к которым требуется доступ раз в квартал с извлечением за миллисекунды.
- S3 Glacier Flexible Retrieval — для архивов с извлечением от 1 минуты до 12 часов.
- S3 Glacier Deep Archive — самый дешёвый класс для долгосрочного хранения (7+ лет) с извлечением от 12 до 48 часов.
- S3 Outposts — позволяет хранить данные локально на оборудовании AWS Outposts, размещённом в собственных центрах обработки данных клиента.
Возможности и функции
Amazon S3 предоставляет широкий набор функций:
- Версионирование — позволяет хранить несколько версий одного объекта в корзине. Полезно для защиты от случайного удаления или перезаписи.
- Управление жизненным циклом — автоматизирует переход объектов между классами хранения (например, через 30 дней переместить в Standard-IA, через 90 — в Glacier) и удаление по истечении срока.
- Репликация — автоматическое копирование объектов между корзинами в одном или разных регионах для повышения доступности и снижения задержек.
- Шифрование — поддерживает шифрование данных на стороне сервера (SSE-S3, SSE-KMS, SSE-C) и на стороне клиента.
- Статический веб-хостинг — позволяет размещать статические веб-сайты (HTML, CSS, JavaScript) непосредственно в корзине S3, без необходимости в веб-сервере.
- Журналирование доступа — запись всех запросов к корзине в другую корзину для аудита и анализа.
- Уведомления о событиях — при изменении объекта (загрузка, удаление) S3 может отправлять уведомления в другие сервисы AWS (SNS, SQS, Lambda) для автоматической обработки.
- S3 Select — позволяет извлекать только подмножество данных из объекта (например, SQL-запрос к CSV-файлу), не загружая весь объект.
- S3 Object Lambda — позволяет добавлять собственную логику обработки данных (например, изменение размера изображения или анонимизация данных) при их извлечении из S3.
Применение
Amazon S3 используется в самых разных сферах:
- Резервное копирование и восстановление — хранение резервных копий баз данных, виртуальных машин и файловых систем.
- Архивирование — долгосрочное хранение логов, юридических документов, исторических данных.
- Хостинг статических сайтов и контента — размещение изображений, видео, CSS, JavaScript для веб-приложений.
- Хранение данных приложений — для мобильных и веб-приложений, которым требуется масштабируемое хранилище для пользовательского контента (фото, видео, документы).
- Аналитика и большие данные — хранение исходных данных для обработки в AWS EMR, Amazon Redshift, Amazon Athena.
- Медиа- и развлекательная индустрия — хранение и доставка видеофайлов для стриминговых сервисов.
- Научные исследования — хранение больших объёмов данных, например, геномных последовательностей или спутниковых снимков.
Безопасность и соответствие стандартам
Amazon S3 соответствует множеству стандартов безопасности и сертификаций, включая SOC 1/2/3, PCI DSS, HIPAA, FedRAMP, ISO 27001. AWS предоставляет инструменты для шифрования данных, управления доступом, мониторинга (Amazon CloudTrail, Amazon GuardDuty) и аудита. Несмотря на это, неправильная конфигурация политик доступа (например, открытие корзины для публичного чтения) является частой причиной утечек данных.
Ограничения
- Размер одного объекта не может превышать 5 терабайт.
- При загрузке одного объекта через один запрос (PUT) максимальный размер — 5 гигабайт. Для объектов большего размера используется многокомпонентная загрузка (Multipart Upload).
- Имя корзины должно быть глобально уникальным и соответствовать определённым правилам (длина от 3 до 63 символов, только строчные латинские буквы, цифры и дефисы).
Источники
- Amazon Web Services, Inc. «Amazon Simple Storage Service (S3) — Облачное хранилище объектов». Официальная документация AWS.
- Amazon Web Services, Inc. «История Amazon S3». Блог AWS.
- Thomas Erl, Zaigham Mahmood, Ricardo Puttini. «Cloud Computing: Concepts, Technology & Architecture». Prentice Hall, 2013.
- NIST Special Publication 800-145. «The NIST Definition of Cloud Computing». Национальный институт стандартов и технологий США, 2011.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →