A B C D E F G H I J K L M N O P R S T V W Y Z А Б В Г Е И К М О П Т Ц

S3

S3

S3 (Simple Storage Service) — это объектное хранилище данных с доступом по HTTP(S), предназначенное для масштабируемого, отказоустойчивого и долговременного хранения неструктурированных данных с моделью доступа через ключи и бакеты. Изначально технология была разработана компанией Amazon. Сегодня S3 стал глобальным протоколом обмена информацией. Любой современный разработчик сталкивается с ним каждый день. Это надежный фундамент всего современного интернета. Загружаете новую фотографию в свою социальную сеть? Скорее всего, она моментально летит в S3. Обучаете сложную нейросеть на миллионах цифровых картинок? Все эти данные надежно лежат в S3-совместимом хранилище. Этот индустриальный стандарт навсегда изменил подход к архитектуре. Нам больше не нужны дорогие и хрупкие жесткие диски. Мы используем гибкие и надежные виртуальные облачные баскеты. Облачная инфраструктура берет на себя все заботы по масштабированию.

Архитектура и ключевые особенности S3

 

В основе S3 лежит предельно простая архитектура. Однако эта простота обеспечивает невероятную мощность всей системы. Здесь нет привычных папок или сложных вложенных директорий. Все данные хранятся в едином плоском пространстве. Это позволяет системе работать очень быстро. Масштабирование происходит совершенно без ограничений и задержек. Рассмотрим главные компоненты объектного хранилища более подробно.

Сравнение S3 хранилища с файловым хранилищем

Баскеты (Buckets)

Это контейнеры самого верхнего уровня для ваших данных. Имя баскета всегда должно быть глобально уникальным. В один баскет можно положить миллионы различных файлов.

  • Логика папок. Баскет совершенно не является привычной директорией.

  • Уровень вложенности. Внутри баскета строго запрещено создавать другой баскет.

Именно поэтому баскеты обеспечивают надежную логическую изоляцию ваших проектов.

Объекты (Objects)

Это сами файлы, которые вы загружаете в облако. Объект состоит из полезных данных и служебных метаданных.

  • Целостность данных. Объект категорически нельзя изменить только частично.

  • Механизм обновления. При любом обновлении старый файл перезаписывается целиком.

Такой подход гарантирует абсолютную целостность вашей сохраненной информации в облаке.

Ключи (Keys)

Это уникальный идентификатор конкретного объекта внутри баскета. Ключ заменяет привычный путь к вашему локальному файлу.

  • Индексация. Ключи обеспечивают невероятно быстрый поиск внутри баскета.

  • Визуализация. Они позволяют имитировать вложенность папок только визуально.

В итоге вы получаете высокую скорость работы системы поиска.

 

Метаданные (Metadata)

Это важная информация о ваших сохраненных данных. Вы можете добавлять свои собственные теги к файлам.

  • Системные данные. Системные метаданные включают точную дату загрузки файла.

  • Пользовательские данные. Пользовательские метаданные описывают суть самого сохраненного документа.

Метаданные невероятно упрощают фильтрацию нужной информации через программный API.

Принцип работы S3 — В чем отличие от жестких дисков?

 

Привычные локальные диски используют файловую или блочную систему. Файловая система похожа на большое дерево с ветками. Блочная система нарезает данные на абсолютно равные куски. S3 работает по совершенно иному инновационному принципу.

Здесь каждый загруженный файл получает свой уникальный идентификатор. Данные хранятся на тысячах независимых серверов одновременно. Система сама управляет их физическим размещением и репликацией. Разработчик просто обращается к нужному файлу через HTTP-запросы.

Это дает дата-инженерам просто невероятную свободу действий. Вы можете хранить эксабайты совершенно неструктурированных сырых данных. Вам больше совершенно не нужно покупать новые жесткие диски.

Однако S3 совершенно не подходит для реляционных баз данных. Обновление объекта целиком занимает слишком много драгоценного времени. Поэтому S3 всегда используют для хранения статического контента. Для динамичных баз данных берут быстрые локальные блочные хранилища.

S3 как протокол: Yandex, Selectel и Beget

Изначально аббревиатура S3 означала только сервис облака AWS. Сегодня это универсальный язык общения с любыми облачными хранилищами. Многие провайдеры создали свои собственные S3-совместимые программные решения. Это особенно актуально для современного отечественного рынка IT. Местные провайдеры предлагают отличные и весьма надежные альтернативы. Рассмотрим ключевых игроков на российском облачном рынке.

Yandex Object Storage

Это невероятно мощное и зрелое решение от компании Яндекс. Оно практически полностью поддерживает оригинальный API классического S3.

  • Присутствует глубокая интеграция с сервисами Yandex Cloud.

  • Имеется удобное управление политиками доступа через IAM.

Пример консоли Yandex Cloud S3 storage что такое и как использовать

Поэтому Яндекс часто выбирают для сложных корпоративных проектов аналитики.

Облачное хранилище Selectel

Этот известный провайдер предлагает очень надежное объектное хранилище. Сервис отличается прозрачным и максимально понятным ценообразованием.

  • Присутствует наличие выгодных холодных классов хранения архивов.

  • Доступны выделенные защищенные каналы связи для бизнеса.

Selectel является отличным выбором для безопасного резервного копирования систем.

Объектное хранилище Beget

Известный хостинг-провайдер Beget также успешно внедрил поддержку стандарта S3. Это решение отлично подходит для начинающих веб-разработчиков.

  • Имеется тесная интеграция с панелью управления хостингом.

  • Обеспечен очень низкий порог входа для новичков.

  • Beget идеально закрывает базовые потребности небольших и развивающихся проектов.

Пример подключений и интерфейса доступа к S3 beget

Подводя итог этому разделу, можно смело сказать следующее. Выбор конкретного провайдера зависит только от ваших текущих задач. Ваш написанный код будет работать везде абсолютно одинаково.

Локальный S3 с MinIO — Развертывание в Docker

Иногда облачные решения совершенно не подходят для текущего проекта. Например, вам нужна строгая локальная изоляция конфиденциальных данных. В таких случаях на помощь приходит открытый проект MinIO. Это полноценное S3-совместимое объектное хранилище для вашего локального сервера. Оно написано на языке Go и работает невероятно быстро. MinIO идеально подходит для тестирования гипотез машинного обучения. Развернуть его локально можно буквально за пару минут.  Мы недавно рассматривали пример использования и развертывания Minio в docker для наших бесплатных курсах- статьях про Airflow здесь Для этого мы будем использовать популярный инструмент Docker. Рассмотрим ключевые преимущества этого замечательного open-source решения.

  • Полная совместимость. API полностью совпадает с классическим Amazon S3.

  • Высокая производительность. Система оптимизирована для работы с тяжелыми датасетами.

  • Простота установки. Все зависимости аккуратно упакованы в готовый контейнер.

Таким образом, MinIO является лучшим выбором для локальной разработки. Вы получаете мощный инструмент совершенно бесплатно. Ниже представлен готовый скрипт для быстрого запуска хранилища.

version: '3.8'
services:
  minio:
    image: minio/minio:latest
    container_name: local-s3-minio
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ROOT_USER: "admin_user"
      MINIO_ROOT_PASSWORD: "admin_password"
    command: server /data --console-address ":9001"
    volumes:
      - ./minio_data:/data

Сохраните этот код в файл docker-compose.yml. Затем просто выполните команду docker-compose up -d в терминале. Хранилище будет мгновенно запущено в фоновом режиме. Веб-интерфейс станет доступен по адресу http://localhost:9001. Теперь вы можете подключаться к нему через библиотеку boto3. В качестве параметра endpoint_url просто укажите локальный адрес http://localhost:9000.

Локальный S3 storage от Minio для использования хранения объектов Apache Airflow

 

Сценарии использования S3 в Big Data и ML

 

Объектное хранилище решает огромное множество сложных инфраструктурных задач. В сфере аналитики данных это совершенно незаменимый рабочий инструмент. Дата-инженеры строят на базе S3 огромные корпоративные платформы. Машинное обучение также требует слишком много свободного дискового пространства. Выделим основные направления практического применения этой технологии.

  • Озера данных (Data Lakes). S3 является идеальным фундаментом для сырых неструктурированных данных. Сюда ежедневно складывают логи, тексты и различную телеметрию. Аналитические инструменты читают эти данные прямо из облачного баскета.

How does S3 data lake work - пример конфигурации Data lake c S3

  • Хранение огромных датасетов. Для обучения современных нейросетей требуются миллионы качественных изображений. S3 позволяет надежно хранить и очень быстро загружать их.
  • Резервное копирование (Backups). Надежность хранения в S3 составляет невероятное множество девяток. Это делает его идеальным долгосрочным архивом для любого бизнеса.
  • Хостинг статических сайтов. На S3 можно легко разместить целый современный веб-сайт. Для этого вам больше не нужен отдельный дорогой сервер.

Таким образом, S3 покрывает все потребности аналитики и разработки. Это универсальный инструмент для любых объемов цифровой информации.

Управление затратами: Классы хранения данных

 

Хранение больших объемов информации всегда стоит реальных денег. Однако разные данные имеют совершенно разную коммерческую ценность. Некоторые важные файлы нужны приложению каждую секунду. Другие архивные файлы лежат годами без всякого практического дела. Провайдеры предлагают использовать совершенно разные классы хранения. Это помогает грамотно оптимизировать ежемесячные расходы любой компании. Изучим основные тарифные планы современных объектных хранилищ.

Стандартный класс (Standard)

Он предназначен для горячих данных и частых пользовательских запросов. Данный класс всегда обеспечивает мгновенный доступ к нужным файлам. Этот вариант стоит значительно дороже всех остальных доступных классов. Он идеально подходит для активной и постоянной ежедневной работы.

Холодный класс (Cold)

Этот тариф подходит для редкого обращения к сохраненным данным. Например, он идеален для хранения ежемесячных финансовых отчетов. Само хранение обходится значительно дешевле стандартного тарифа. Однако каждое скачивание файла обойдется вам немного дороже.

Ледяной класс (Archive)

Этот вариант используется только для долгосрочных и редко используемых архивов. Цена за каждый хранимый гигабайт здесь просто невероятно минимальна. Однако получение нужного файла займет у вас несколько часов. Этот класс отлично подходит для строгих юридических документов.

Резюмируя, можно выделить одно очень важное золотое правило. Правильный выбор класса легко экономит бизнесу миллионы рублей.

Безопасность и управление доступом

 

Надежная защита данных в облаке имеет самое критическое значение. Протокол S3 предоставляет мощные инструменты для обеспечения максимальной безопасности. По умолчанию все новые созданные баскеты полностью закрыты. Никто в интернете не имеет к ним никакого несанкционированного доступа. Разработчик должен явно разрешить чтение или запись файлов. Рассмотрим базовые инструменты для защиты облачного хранилища.

Политики баскетов (Bucket Policies)

Это очень гибкие правила в стандартном формате JSON. Они жестко определяют права доступа для целого баскета целиком.

  • Защита файлов. Политики позволяют запретить удаление важных файлов без авторизации.

  • Групповой доступ. Они легко управляют доступом для целых групп пользователей. Это основной и самый мощный инструмент современного системного администратора.

Это основной и самый мощный инструмент современного системного администратора.

Предварительно подписанные URL (Presigned URLs)

Это уникальные временные ссылки для скачивания строго приватных файлов. Вы генерируете такую ссылку прямо в своем программном коде.

  • Безопасный обмен. Это самый безопасный способ поделиться файлом с клиентом.
  • Автономность. Генерация ссылки не требует сетевого запроса к провайдеру.

Ссылка просто навсегда перестает работать через заданное вами время.

 

Взаимодействие и код: Практический пример

 

Работать с S3 в современных приложениях очень просто. В популярном языке программирования Python есть отличные готовые библиотеки. Самая известная из них традиционно называется boto3. Она поддерживает абсолютно любых S3-совместимых облачных провайдеров. Вам нужны только ваши секретные ключи доступа. Также обязательно потребуется указать точный адрес сервера выбранного провайдера. Разберем простой рабочий пример кода для базовых операций.

Предварительно лучше создать среду venv

python3 -m venv venv/
source venv/bin/activate

#---- установить пакет boto3
pip3 install boto3

а потом уже вызывать python3 для ввода команд

import boto3

# Настройки клиента для Yandex, Selectel или Beget
session = boto3.session.Session()

# Подключение к S3-совместимому хранилищу
s3 = session.client(
    service_name='s3',
    endpoint_url='https://storage.yandexcloud.net', 
    aws_access_key_id='YCAJETIGoGXXXXXXXXXXRHB',                 #----- Подставь свои с Yandex S3
    aws_secret_access_key='YCP6Y8-QKprRjQUXXXXXXXXXO53_cYDYphyF' #----- подставь свои с Yandex S3
)

# Загрузка локального файла в облачный баскет
s3.upload_file('local_data.csv', 'airflow-course', 'wikidataset/remote_data.csv')

# Скачивание файла из баскета на локальный компьютер
s3.download_file('airflow-course', 'wikidataset/remote_data.csv', 'downloaded_data.csv')

# Получение списка всех объектов в указанном баскете
response = s3.list_objects_v2(Bucket='airflow-course')
for obj in response.get('Contents', []):
    print(f"Успешно найден файл: {obj['Key']}")

print("Все запланированные операции с S3 успешно завершены!")

Этот небольшой скрипт выполняет самые базовые рутинные операции. Представленный код будет абсолютно одинаковым для всех провайдеров. Изменится только один важный параметр, а именно endpoint_url. Миграция между разными облаками всегда проходит безболезненно.

Использование python библиотеки boto3 для подключения и работы с объектным хранилищем на Yandex Cloud или MinIO

Заключение

 

Объектное хранилище S3 навсегда изменило весь мир технологий. Это больше не просто проприетарный закрытый продукт одной компании. Это универсальный открытый протокол обмена цифровыми данными. Российские провайдеры невероятно успешно внедрили этот важный стандарт. Компании Yandex, Selectel и Beget предлагают отличные рабочие условия. Разработчикам доступен простой, надежный и интуитивно понятный инструмент. Выбирайте подходящего провайдера и смело начинайте строить архитектуру. Ваши бесценные данные всегда будут в полной безопасности.

Референсные ссылки

Изменение базового тарифа с 1 января 2026 года Подробнее