Гид по технологиям

Как создать бакет в Amazon S3, загрузить объект и управлять доступом

6 min read Cloud Обновлено 26 Nov 2025
Создать бакет S3, загрузить объект и управлять доступом
Создать бакет S3, загрузить объект и управлять доступом

Иллюстрация: облачное хранилище Amazon S3

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

Короткое определение

S3 (Simple Storage Service) — масштабируемое объектное хранилище от AWS. Объект = файл плюс метаданные. Версии файлов, шифрование и управление доступом настроены на уровне бакета и объектов.

Важно: по умолчанию в аккаунте AWS можно создать до 100 бакетов. Для увеличения лимита обращайтесь в поддержку AWS.

Что мы сделаем

  1. Войдём в AWS.
  2. Создадим бакет S3 (в примере публичный).
  3. Загрузим объект.
  4. Получим доступ к объекту по URL.
  5. Изменим настройки доступа, чтобы сделать объект приватным.

Предварительные требования

  1. Аккаунт AWS. Если нет — зарегистрируйтесь и настройте MFA для безопасности.

Шаг 1. Вход в AWS

Перейдите на страницу входа в AWS и введите свои учётные данные. После успешного входа откроется консоль управления с перечнем сервисов.

Страница входа в AWS

Консоль управления AWS с перечнем сервисов

Шаг 2. Создание бакета S3

  1. В консоли выберите меню «Services» и затем «S3» в разделе Storage.

Выбор S3 в меню Services

  1. Нажмите на кнопку «Create bucket», задайте уникальное глобальное имя бакета и выберите регион. Рекомендуется выбирать ближайший регион для снижения задержки.

Форма создания бакета S3

  1. На шаге конфигурации можно включить версионирование, логирование доступа, теги и шифрование. В этом примере оставим настройки по умолчанию и нажмём «Next».

  2. По умолчанию S3 блокирует публичный доступ. Для демонстрации мы временно снимем блокировку, сняв флажок «Block all public access», и продолжим.

Разрешение публичного доступа к бакету S3

  1. Проверьте настройки и нажмите «Create bucket». Система создаст бакет.

Успешно создан бакет S3

Важно: публичные бакеты опасны для конфиденциальных данных. Используйте публичный доступ только для статических сайтов или общедоступных ресурсов.

Шаг 3. Загрузка объекта в бакет

  1. Откройте созданный бакет и нажмите «Upload».

Экран загрузки объекта в S3

  1. Добавьте файл через «Add files» и нажмите «Next».

Добавление файлов в S3 через Add Files

  1. На шаге Manage public permissions выберите опцию «Grant public read access to the objects», чтобы объект был доступен по публичному URL. Затем нажмите «Next».

Предоставление публичного доступа к объектам

  1. Оставьте Storage Class как Standard для часто используемых данных. Нажмите «Upload».

Выбор класса хранения S3 Standard

  1. После загрузки вы увидите файл в списке объектов.

Список файлов в бакете S3 после загрузки

Шаг 4. Доступ к объекту

  1. Выберите объект и в разделе «Overview» скопируйте поле «Object URL».

URL объекта в S3

  1. Вставьте URL в браузер — файл загрузится или откроется в зависимости от типа контента.

Открытие объекта в браузере по URL

Шаг 5. Возврат доступа в приватный режим

Публичный доступ редко уместен для приватных данных. Чтобы закрыть доступ:

  1. Выберите объект или бакет.
  2. Перейдите в раздел «Permissions» и нажмите «Edit» для параметра блокировки публичного доступа.
  3. Включите «Block all public access» и подтвердите.

Блокировка всего публичного доступа

Редактирование настроек публичного доступа бакета S3

После блокировки при попытке открыть старый Object URL вы увидите ошибку Access Denied.

Access Denied при закрытом доступе к объекту

Практическая методология — шаги одного простого SOP

  1. Проверка требований и назначения данных.
  2. Создание бакета с понятным именем и тегами для биллинга.
  3. Выбор региона и включение версионирования при необходимости.
  4. Настройка шифрования (если данные чувствительны).
  5. Настройка политики доступа: IAM роли и политики, а не публичные ACL.
  6. Загрузка и проверка разрешений объектов.
  7. Настройка логирования и мониторинга доступа.

Чек-лист ролей

  • Разработчик

    • Проверил имя бакета и регион
    • Добавил теги для среды (dev/prod)
    • Загрузил тестовый файл и проверил доступ
  • Системный администратор

    • Настроил версионирование и lifecycle правила
    • Включил серверные логи доступа при необходимости
  • Инженер по безопасности

    • Проверил, что бакет не открыт для всех
    • Настроил шифрование на стороне сервера
    • Настроил IAM-ролей вместо публичных политик
  • Менеджер продукта

    • Утвердил политику хранения и жизненный цикл данных
    • Проверил биллинг по тегам

Частые ошибки и способы их устранения

  • Ошибка Access Denied при публичном URL

    • Причина: бакет или объект не имеет публичных прав или включена блокировка публичного доступа.
    • Решение: проверьте настройки Permissions и Block public access, пересмотрите политику ACL и bucket policy.
  • Объект не найден

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

    • Причина: неправильная архитектура доступа.
    • Решение: используйте CDN (CloudFront), оптимизируйте ключи объектов для параллельного доступа.

Когда S3 не подходит

  • Для блочного доступа с низкой задержкой в реальном времени лучше использовать EBS.
  • Для общих файловых систем с POSIX-семантикой используйте EFS или FSx.
  • Для баз данных и транзакционных операций S3 неприменим.

Модель мышления и подсказки

  • Думайте об S3 как о наборе объектных контейнеров без иерархии в привычном смысле — «псевдо-папки» реализованы через ключи объектов.
  • Минимизируйте публичный доступ. Отдавайте публичные URL только для статического контента.
  • Используйте теги для отслеживания затрат и автоматизации lifecycle задач.

Критерии приёмки

  1. Бакет создан с уникальным именем и правильным регионом.
  2. Загруженный объект доступен по публичному URL только если это требуется.
  3. Для приватных объектов доступ закрыт и выдаётся Access Denied для внешних пользователей.
  4. Включено шифрование для чувствительных данных и настроены теги для биллинга.

Диаграмма принятия решения

flowchart TD
  A[Нужно ли публично доступное содержимое?] -->|Да| B[Создать бакет и разрешить публичный доступ]
  A -->|Нет| C[Создать бакет и включить Block public access]
  B --> D[Загрузить объект и установить ACL public-read]
  C --> E[Загрузить объект и не давать публичных прав]
  D --> F[Использовать CloudFront для создания безопасного публичного CDN]
  E --> F

Рекомендации по безопасности

  • Используйте IAM-политики и роли вместо широких ACL.
  • Включайте шифрование на уровне бакета (SSE-S3 или SSE-KMS) для чувствительных данных.
  • Включите логирование доступа и интеграцию с CloudTrail для аудита.
  • Ограничьте публичный доступ и используйте presigned URL для временного доступа.

Советы по оптимизации затрат

  • Для редко запрашиваемых данных используйте классы хранения с низкой стоимостью, например Glacier или Intelligent-Tiering.
  • Настройте lifecycle правила: перевод в холодное хранение и автоматическое удаление старых версий.
  • Используйте теги для распределения затрат по продуктам и командам.

Короткое резюме

S3 — гибкое объектное хранилище. Для простого сценария: создайте бакет, загрузите файл, при необходимости откройте на чтение, затем закройте доступ. Всегда ставьте безопасность и версионирование в приоритет для критичных данных.

FAQ

Q: Нужно ли указывать регион при создании бакета

A: При создании бакета вы указываете регион, где будут храниться данные. Рекомендуется выбирать ближайший регион.

Q: Как сделать доступ временным

A: Используйте presigned URL, чтобы выдавать временный доступ без открытия бакета для всех.

Q: Можно ли увеличить лимит бакетов

A: Да, обратитесь в службу поддержки AWS, чтобы увеличить лимит с дефолтных 100 бакетов.


Если нужно, могу подготовить шаблон IAM-политики для доступа к бакету или пошаговый плейбук для автоматизации создания бакетов через AWS CLI или Terraform.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как создать и использовать аватар в Instagram
Социальные сети

Как создать и использовать аватар в Instagram

Developer-бета iOS 17, iPadOS 17, watchOS 10, macOS
Руководство

Developer-бета iOS 17, iPadOS 17, watchOS 10, macOS

Взлом Wi‑Fi: методы и защита
Кибербезопасность

Взлом Wi‑Fi: методы и защита

Суммирование в Google Sheets — числа, ячейки, матрицы
Google Таблицы

Суммирование в Google Sheets — числа, ячейки, матрицы

Разблокировка iPhone с Apple Watch
Гаджеты

Разблокировка iPhone с Apple Watch

Импорт и экспорт данных в Excel
Excel

Импорт и экспорт данных в Excel