0Pricing
AWS Solutions Architect · Урок

Контейнеры, объекты и регионы

Создайте контейнеры S3, загрузите объекты, изучите именование ключей и узнайте, как S3 реплицирует данные внутри региона.

«Контейнеры, объекты и регионы» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Solutions Architect, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Solutions Architect содержит 4 уроков всего.

Что такое Amazon S3?

Amazon Simple Storage Service (S3) — это сервис объектного хранения AWS, предназначенный для хранения и получения любого объема данных из любой точки интернета. S3 обеспечивает 11 девяток надежности (99.999999999%) благодаря избыточному хранению объектов на нескольких устройствах в нескольких зонах доступности выбранного региона. Он неограниченно масштабируется, не имеет ограничения емкости и поддерживает объекты размером от 0 байт до 5 TB. S3 лежит в основе множества архитектур AWS: на нем размещаются статические веб-сайты, озера данных, репозитории резервных копий и многое другое.

Бакеты S3: контейнер верхнего уровня

Бакет S3 — это контейнер объектов с глобально уникальным именем. Бакеты создаются в определенном регионе AWS, но их имена должны быть глобально уникальными среди всех учетных записей AWS по всему миру, поскольку имя становится частью URL. Имя бакета должно содержать от 3 до 63 символов, состоять из строчных букв, начинаться с буквы или цифры и не содержать символов подчеркивания или заглавных букв. Рекомендуется включать ID учетной записи или случайный суффикс, чтобы избежать совпадения имен с другими учетными записями.

# Create an S3 bucket in a specific region
aws s3api create-bucket \
  --bucket my-company-data-20240101 \
  --region us-west-2 \
  --create-bucket-configuration LocationConstraint=us-west-2

Объекты и ключи S3

Объект в S3 состоит из данных (содержимого файла), ключа (уникального имени объекта в бакете), метаданных (определяемых системой и пользователем пар «ключ-значение»), а также, при необходимости, ID версии, если версионирование включено. Ключ — это полная строка, похожая на путь, например photos/2024/summer/beach.jpg. S3 имеет плоскую структуру: настоящих каталогов нет, есть только префиксы ключей, которые выглядят как каталоги. Максимальный размер объекта составляет 5 TB; для объектов больше 100 MB используйте Multipart Upload, чтобы повысить производительность и надежность.

# Upload an object
aws s3 cp ./report.pdf s3://my-company-data-20240101/reports/2024/report.pdf

# List objects with a specific prefix
aws s3 ls s3://my-company-data-20240101/reports/2024/

Форматы URL S3

Доступ к объектам S3 можно получить через URL двух форматов. В стиле пути: https://s3.<region>.amazonaws.com/<bucket>/<key> (устаревает для новых бакетов). В стиле виртуального хоста: https://<bucket>.s3.<region>.amazonaws.com/<key> (текущий стандарт). Имя бакета становится поддоменом, поэтому имена бакетов должны соответствовать требованиям DNS. Для предварительно подписанных URL и дистрибутивов CloudFront всегда используется формат виртуального хоста. Понимание структуры URL помогает правильно настраивать политики бакетов и CORS.

# Generate a pre-signed URL valid for 1 hour (3600 seconds)
aws s3 presign s3://my-company-data-20240101/reports/2024/report.pdf \
  --expires-in 3600

Модель согласованности данных S3

С декабря 2020 года Amazon S3 автоматически и без дополнительной платы обеспечивает строгую согласованность чтения после записи для всех операций: PUT новых объектов, перезаписи и DELETE во всех регионах. Это означает, что сразу после успешной записи любое последующее чтение вернет последнюю версию объекта. Это существенное улучшение по сравнению с предыдущей моделью конечной согласованности, которое упрощает проектирование приложений, устраняя необходимость в задержках чтения после записи или логике повторных попыток.

S3 и регионы: размещение данных

При создании бакета S3 вы указываете регион, и ваши данные остаются в этом регионе, если вы явно не настроите репликацию. AWS реплицирует данные в пределах этого региона между несколькими AZ для надежности, но не перемещает данные в другие регионы автоматически. Такое региональное размещение данных важно для соответствия требованиям: если нормативные требования предписывают хранить данные в EU, создайте бакет в eu-west-1 или другом регионе EU, и ваши данные не покинут его.

# Find the region of an existing bucket
aws s3api get-bucket-location \
  --bucket my-company-data-20240101

Multipart Upload для больших объектов

Multipart Upload обязателен для объектов размером более 5 GB и рекомендуется для объектов более 100 MB. Он делит объект на части (минимум 5 MB на часть, до 10 000 частей), загружает каждую часть независимо, параллельно с другими, а затем объединяет их в итоговый объект. Если какая-либо часть не загружена, повторно загружается только эта часть. AWS CLI и SDK автоматически обрабатывают составную загрузку при использовании команды aws s3 cp для больших файлов: вручную реализовывать ее не требуется.

# The CLI uses multipart automatically for large files
aws s3 cp large-file-50GB.tar.gz s3://my-bucket/ \
  --storage-class STANDARD

# Or use s3api to control multipart manually
aws s3api create-multipart-upload \
  --bucket my-bucket \
  --key large-file-50GB.tar.gz

Метаданные объектов S3

Каждый объект S3 имеет системные метаданные, заданные AWS (Content-Type, Content-Length, ETag, Last-Modified), и необязательные пользовательские метаданные (пользовательские пары «ключ-значение» с префиксом x-amz-meta-). Метаданные хранятся вместе с объектом и возвращаются в заголовках HTTP-ответа при загрузке объекта. Content-Type особенно важен для веб-раздачи: если загрузить HTML-файл без указания Content-Type: text/html, браузеры могут предложить скачать его вместо отображения.

# Upload with explicit Content-Type metadata
aws s3 cp index.html s3://my-website-bucket/ \
  --content-type 'text/html' \
  --metadata 'author=alice,env=production'

S3 для размещения статического веб-сайта

Amazon S3 может выступать в роли хоста статического веб-сайта, напрямую раздавая из бакета HTML, CSS, JavaScript, изображения и другие файлы. Включите размещение статического веб-сайта в свойствах бакета, укажите индексный документ (index.html) и необязательный документ ошибки (404.html). URL конечной точки веб-сайта бакета имеет формат: http://<bucket>.s3-website.<region>.amazonaws.com. Для поддержки HTTPS и пользовательского домена разместите дистрибутив CloudFront перед бакетом S3 со статическим веб-сайтом.

# Enable static website hosting
aws s3api put-bucket-website \
  --bucket my-website-bucket \
  --website-configuration '{"IndexDocument":{"Suffix":"index.html"},"ErrorDocument":{"Key":"404.html"}}'

Ускорение передачи S3

S3 Transfer Acceleration ускоряет загрузку объектов на больших расстояниях, направляя данные через ближайший пограничный узел CloudFront, а затем по частной магистральной сети AWS в регион бакета S3. Вместо прямой загрузки в конечную точку S3 клиент загружает данные в ускоренную конечную точку, например my-bucket.s3-accelerate.amazonaws.com. Transfer Acceleration добавляет небольшую плату за GB, но может существенно повысить скорость загрузки для пользователей, географически удаленных от региона бакета.

# Enable Transfer Acceleration on a bucket
aws s3api put-bucket-accelerate-configuration \
  --bucket my-company-data-20240101 \
  --accelerate-configuration Status=Enabled

Тегирование объектов S3

Теги объектов — это пары «ключ-значение», прикрепляемые к объектам S3 для их категоризации и управления ими. Теги используются для: правил жизненного цикла (перевода или удаления объектов с определенными тегами), контроля доступа (условий в политиках IAM и бакетов на основе значений тегов), распределения затрат (Cost Explorer отслеживает расходы S3 по тегам), а также инвентаризации и аналитики. Каждый объект может иметь до 10 тегов. Теги можно добавить при загрузке или обновить после создания объекта, не изменяя сами данные объекта.

# Add tags to an existing object
aws s3api put-object-tagging \
  --bucket my-company-data-20240101 \
  --key reports/2024/report.pdf \
  --tagging '{"TagSet":[{"Key":"env","Value":"production"},{"Key":"owner","Value":"finance"}]}'

Быстрая проверка

Проверьте свое понимание концепций AWS Solutions Architect (SAA-C03) из этого урока.

Итоги урока

На этом уроке вы узнали: бакеты S3 — это контейнеры с глобально уникальными именами, привязанные к определенному региону, объекты хранятся в плоской структуре ключей и поддерживают метаданные и теги, а также S3 обеспечивает строгую согласованность чтения после записи и 11 девяток надежности благодаря избыточности между несколькими AZ. Далее вы изучите контроль доступа S3 с помощью политик бакетов и ACL.

Часто задаваемые вопросы

Урок «Контейнеры, объекты и регионы» бесплатный?

Да — полный текст урока «Контейнеры, объекты и регионы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.

Чему я научусь в уроке «Контейнеры, объекты и регионы»?

Создайте контейнеры S3, загрузите объекты, изучите именование ключей и узнайте, как S3 реплицирует данные внутри региона. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AWS Solutions Architect?

Предыдущий опыт не требуется. AWS Solutions Architect на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Контейнеры, объекты и регионы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AWS Solutions Architect?

Да. Каждый урок AWS Solutions Architect включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Контейнеры, объекты и регионы
  2. Управление доступом S3: политики контейнеров и ACL
  3. Версионирование, MFA Delete и репликация
  4. Классы хранилищ и политики жизненного цикла
← Назад к AWS Solutions Architect