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

Размещение статического сайта в Amazon S3

5 min read AWS S3 Обновлено 22 Nov 2025
Размещение статического сайта в Amazon S3
Размещение статического сайта в Amazon S3

Amazon S3 — объектное хранилище

Краткое описание

Amazon S3 — это объектное хранилище. Оно не выполняет серверный код, но отлично подходит для хранения и отдачи статических файлов: HTML, CSS, JavaScript, изображений и шрифтов. Чтобы сделать сайт доступным по HTTP(S), нужно:

  • создать публичный S3 бакет с уникальным именем;
  • включить статический веб‑хостинг для бакета;
  • загрузить файлы сайта и дать объектам публичный доступ;
  • при необходимости подключить CloudFront/Route 53 для HTTPS и кастомного домена.

В этой инструкции показан пошаговый процесс через AWS Management Console.

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

  1. Учётная запись AWS.
  2. Создан публичный S3 бакет (в статье предполагается, что он уже есть).

Важное: имя бакета должно быть уникально во всём AWS и соответствовать правилам именования.

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

  1. Проверим, что существует публичный S3 бакет.
  2. Включим для него статический веб‑хостинг и загрузим index.html.
  3. Сделаем объект доступным по Object URL.

Пошаговая инструкция через консоль AWS

  1. Откройте консоль S3 и выберите нужный бакет.
  2. Перейдите в вкладку Permissions и найдите раздел Static website hosting.

Включение размещения статического сайта в S3

  1. Выберите Use this bucket to host a website, укажите индексный документ (обычно index.html) и страницу ошибок (например, error.html), затем сохраните настройки.

Настройки статического веб-хостинга для бакета S3

  1. Вернитесь к списку объектов бакета и нажмите Upload, чтобы загрузить содержимое сайта (минимум index.html).

Экран загрузки файлов в бакет S3

  1. На шаге управления разрешениями укажите Grant public read access to the objects, чтобы файлы были доступны публично, затем завершите загрузку.

  2. В списке объектов выберите index.html и нажмите Make public, если объект ещё не публичный.

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

Список объектов в бакете S3

  1. После публикации откройте Object URL, чтобы просмотреть страницу в браузере.

Кнопка 'Make public' для объекта в S3

Поле с URL объекта для просмотра страницы

Если всё сделано верно, вы увидите загруженную страницу в браузере.

Просмотр статического HTML-страницы в браузере

Пример простого index.html




  
  Мой статический сайт


  

Привет из S3

Это тестовая страница, размещённая в Amazon S3.

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

  • index.html загружен в корень бакета.
  • Для бакета включён Static website hosting с правильным индексным документом.
  • Объект(ы) имеют публичный доступ и открываются по Object URL.
  • Имя бакета уникально и корректно соответствует требованиям DNS, если планируете привязать кастомный домен.

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

  • По возможности не давайте публичный доступ всему бакету. Вместо это́го используйте политики объектов или CloudFront с Origin Access Identity.
  • Для HTTPS и кастомного домена используйте CloudFront и AWS Certificate Manager (ACM).
  • Ограничьте права IAM — давайте доступ только тем ролям и пользователям, которым он нужен.
  • Регулярно проверяйте публичные объекты и ведите аудит доступа.

Примечание: простая настройка “Make public” годится для тестовых и простых сайтов, но для продакшн-релиза лучше закрывать бакет и отдавать контент через CDN.

Альтернативные подходы и когда они нужны

  • CloudFront + S3: нужен для HTTPS, минимальной задержки и собственных доменов.
  • Route 53: использовать для управления DNS и привязки домена к CloudFront.
  • Static site generators (Hugo, Jekyll): собирают статический сайт локально, затем вы деплоите результат в S3.

Когда S3 не подойдёт

  • Если сайт требует серверной логики (базы данных, серверный рендеринг) — S3 не подходит.
  • Для веб‑приложений со сложными API используйте AWS Lambda, Elastic Beanstalk или EC2.

Мини‑методология деплоя (шаблонный процесс)

  1. Соберите статический сайт локально.
  2. Залейте файлы в папку сборки в S3.
  3. Обновите кеш CloudFront (invalidate), если применимо.
  4. Проверьте доступность по URL и журналам доступа.
  5. Автоматизируйте с помощью CI/CD (например, GitHub Actions, GitLab CI) для повторяемых деплоев.

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

Разработчик

  • Собрать сайт локально.
  • Проверить относительные/абсолютные пути в ресурсах.

Системный администратор

  • Настроить публичный доступ или настроить CloudFront OAI.
  • Выдать сертификат ACM для HTTPS.

DevOps/Инженер CI

  • Автоматизировать загрузку в S3.
  • Добавить invalidation для CloudFront при обновлениях.

Типичные проблемы и способы их решения

  • Страница не открывается — проверьте, что Object URL возвращает 200 и объект публичный.
  • 403 Forbidden — проверьте политику бакета и ACL объектов.
  • Ошибки по HTTPS при кастомном домене — используйте CloudFront и ACM.
  • Файлы не обновляются в браузере — вероятно, нужен кеш CloudFront или браузера.

Решение для кастомного домена и HTTPS

  1. Создайте сертификат в AWS Certificate Manager в регионе us-east-1 (если используете CloudFront).
  2. Настройте CloudFront с S3 origin; при необходимости включите Origin Access Identity, чтобы закрыть бакет.
  3. Привяжите домен в Route 53 (или другом DNS) к дистрибутиву CloudFront.

Модель принятия решения

  • Простая страница, тестовая: прямой S3 с публичными объектами.
  • Продакшн сайт с HTTPS: S3 + CloudFront + ACM.
  • Динамический бэкенд: используй Lambda/API Gateway или отдельный сервер.

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

  • S3 подходит для статических сайтов и простых landing page.
  • Для безопасности и HTTPS используйте CloudFront и ACM.
  • Автоматизируйте деплой через CI/CD и следите за правами доступа.

ЧАВО

Можно ли хостить динамический сайт в S3?

Нет. S3 предназначен для статических файлов. Для динамики используйте серверную логику (Lambda, EC2, Elastic Beanstalk).

Можно ли привязать собственный домен и получить HTTPS бесплатно?

Да. Используйте CloudFront + AWS Certificate Manager. ACM выдаёт сертификаты бесплатно для использования с CloudFront.

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

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство