Вот краткий список вещей, о которых вам не следует беспокоиться при настройке статического веб-сайта:

  • масштабирование ваших серверов для увеличения трафика
  • вход в Консоль управления AWS, чтобы загрузить новый файл index.html.
  • тратить 5 долларов США на размещение одного статического веб-сайта

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

AWS S3 - доступный вариант для хостинга (и бесплатный для начинающих пользователей), а AWS CloudFront хорош для CDN. Но настроить эти два - боль. Контрольный список довольно длинный:

  1. правильно настроить S3
  2. настроить CloudFront
  3. убедитесь, что вы следовали лучшим практикам, таким как HTTP - ›перенаправление HTTPS.
  4. синхронизировать файлы
  5. сделать CloudFront недействительным для получения обновлений.

К счастью, мой AWS-site-manager с открытым исходным кодом позволяет размещать и обновлять статический сайт так же просто, как одну командную строку.

AWS Site Manager - это простой инструмент командной строки, который позволяет легко разместить статический веб-сайт с помощью AWS S3 и CloudFront, не нарушая передовых практик.

Если вы размещаете сайт впервые, создайте учетную запись AWS и зарегистрируйте свое доменное имя в такой службе, как Namecheap (убедитесь, что вы используете их ежемесячный купон на скидку).

Зачем использовать S3 и CloudFront для статических сайтов?

Итак, учитывая все проблемы, зачем возиться с S3 и CloudFront? Две основные причины:

  1. Доступность функций (по сравнению с бесплатным динамометрическим компьютером Heroku, который отключается при достижении предела бездействия, или Github.io, который не поддерживает HTTPS с пользовательскими доменами)
  2. Скорость (CloudFront - дешевый, но приемлемый CDN)

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

AWS-site-manager выполняет 2 вещи:

1. Настройте S3 и CloudFront с оптимальной конфигурацией:

  • Создать корзины S3
  • Настройте CloudFront Distribution и настройте CNAME
  • Загрузите и установите индивидуальные сертификаты HTTPS
  • Перенаправьте www на голые домены для лучшего SEO
  • Перенаправить HTTP на HTTPS для лучшего SEO (если HTTPS включен)
  • Настройка IAM / автоматическое шифрование сертификата (скоро)

2. Синхронизируйте локальную папку с S3.

  • Gzip-файлы для повышения скорости работы сайта (заменят CloudFront Gzip Setting)
  • Разумное значение по умолчанию для заголовка HTTP (правильный тип MIME, max-age = 900, etag и т. Д.)
  • Недействительное распространение CloudFront для синхронизируемых файлов

Начало работы: Установить

Загрузите двоичный файл для Linux / Mac / Windows выпуск здесь.

Или скомпилируйте из исходников: Если у вас установлена ​​Go 1.6 или выше, выполните следующую команду:

Как использовать AWS Site Manager

1. Настройте учетные данные AWS и выполните config.

Если вы раньше не настраивали учетные данные AWS в своей среде, вы можете настроить их, поместив следующие строки в ~/.aws/credentials.

И в ~/.aws/config

Вам также следует установить переменную среды AWS_SDK_LOAD_CONFIG
Если вы работаете в Linux / Mac с помощью bash, введите следующую строку в ~/.bashrc

Подробнее о настройке AWS CLI можно прочитать в его официальной документации.

2. Используйте это!

Предполагая, что вы собираетесь создать веб-сайты example.com и www.example.com, вы можете:

Приведенные выше команды будут:

  • создать корзину S3 example.com и www.example.com
  • синхронизировать все файлы в локальной папке
  • перенаправить www.example.com на example.com

Если вы хотите использовать https и у вас есть готовый сертификат в формате PEM, вместо этого выполните следующие командные строки, чтобы настроить HTTPS. (если ваш реестр SSL отправил вам .key / .crt, прочтите это)

Наконец, вам необходимо настроить сопоставление DNS с конечной точкой распространения CloudFront. Рассмотрите возможность использования для этого АРМ Маршрут-53.

Вам необходимо настроить запись CNAME, чтобы указать ваше доменное имя на Cloud Front Distribution. Вы можете получить свое доменное имя CloudFront из Консоли управления AWS, а затем установить CNAME своего домена в качестве доменного имени.

Если вам нужно обновить сайт, просто запустите aws-site-manager sync –domain example.com В папке, и команда сравнит изменения файлов, загрузит новые файлы в S3 и сделает недействительным кеш CloudFront для вас.

Иди и запусти

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

AWS-site-manager имеет открытый код и находится на начальной стадии. Если вы хотите внести свой вклад, вы можете создать проблемы или отправить запрос на перенос.

Если у вас есть вопросы по этому проекту или бессерверным решениям в целом, вы можете связаться со мной здесь или в Twitter. Или, если вы когда-нибудь заезжали в Гонконг, приходите ко мне в офис пообщаться!

Наслаждаться!

PS: Моя компания также работает над другим проектом с открытым исходным кодом под названием Skygear.io, который представляет собой бесплатную BaaS, которая включает такие функции, как чат, социальные сети, ботов, вход в социальные сети, синхронизация данных в реальном времени и офлайн, CMS для мобильных устройств. , управление пользователями и т. д.