Простий хостинг сайтів за допомогою Amazon S3 та HTTPS

Привіт, люди!

У цьому посібнику я покажу вам, як розміщувати статичний веб-сайт за допомогою HTTPS на AWS із користувацьким доменом. Все це можливо за допомогою вільного рівня AWS.

Однак послуги, якими ми будемо користуватися, вимагають невеликих платежів. Взагалі кажучи, вони не повинні перевищувати $ 1 / місяць.

Ми будемо використовувати комбінацію таких служб AWS:

—S3

- Маршрут53

- Менеджер сертифікатів

- CloudFront

Давайте займемось цим!

Налаштуйте відра S3

По-перше, вам знадобляться два сегменти S3 , обидва повинні відповідати вашому власному доменному імені з другим, включаючи субдомен www.

Відро 1:mywebsite.com

Відро 2:www.mywebsite.com

Перший сегмент (mywebsite.com) є основним сегментом вашого сайту. Тут містяться всі ваші файли та ресурси для вашого статичного веб-сайту.

Далі ми налаштовуємо це відро для статичного хостингу веб-сайтів. Ви можете знайти це на вкладці "Властивості" сегмента, і ми збережемо наведені тут значення за замовчуванням з індексом сайту, встановленим на index.html.

Нам також потрібно зробити цей сегмент загальнодоступним, оскільки браузер користувача повинен мати доступ до файлів сегмента, щоб відобразити веб-сайт. Ми можемо зробити це, встановивши політику сегмента на вкладці "Дозволи".

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "MY_BUCKET_ARN" } ]}

Це проста політика, яка дозволить лише загальнодоступний доступ для читання об’єктів у сегменті. Тепер, якщо ви перейдете до кінцевої точки, визначеної в статичній конфігурації хостингу сегмента, ви повинні побачити свій веб-сайт.

Прогрес! Але ми можемо зробити краще, ніж це.

Другий сегмент (www.mywebsite.com) ми залишимо порожнім, але налаштуємо переспрямувати на наш перший сегмент, використовуючи HTTP як протокол (ми зробимо його HTTPS пізніше).

Ваші відра тепер готові до роботи!

Налаштуйте домени за допомогою Route53

Отже, ваш веб-сайт працює і працює, але доступний лише через кінцеву точку сегмента, а не ваш власний домен. Давайте змінимо це.

Рухайтесь до Маршруту53 . Якщо ви зареєстрували свій домен в реєстраторі Amazon, ви повинні побачити, що розміщена зона була налаштована для вас із двома наборами записів. Один для сервера імен (NS) та один для SOA.

Все, що нам потрібно зробити, це створити ще два набори записів, щоб вказувати на кінцеві точки сегмента S3.

Для кожного набору записів:

- Тип: A - IPv4-адреса

- Псевдонім: Так

- Псевдонім Target: кінцева точка веб-сайту S3, яка відповідає тому, що ви встановили для Name.

Тепер ми можемо перейти до користувацької URL-адреси ... і voilà!

Ми майже готові, але ще одне, чого нам не вистачає ...

Примітка . Якщо ваш домен зареєстровано в іншому реєстраторі домену (не Amazon), вам потрібно виконати кілька різних кроків, щоб налаштувати це. Зазвичай вам потрібно додати запис CNAME із значенням кінцевої точки основних сегментів S3.

Усунення несправностей :

Якщо ви видалили розміщену зону Amazon, створену під час першої реєстрації домену (я зробив це, оскільки за розміщені зони стягується певна плата), вам доведеться створити нову розміщену зону з нуля.

  1. Виберіть “Створити розміщену зону” та встановіть ім’я домену, наприклад “mywebsite.com”
  2. Це створить кілька нових наборів записів для типів NS та SOA.
  3. Зайдіть у свій зареєстрований домен та оновіть значення серверів імен до тих, які створені в новому наборі записів NS.

Запит на сертифікат

Чудово, сайт зараз розміщений за користувацькою URL-адресою! Однак ми можемо отримати до нього доступ лише за протоколом HTTP.

Ми завжди повинні забезпечувати захист наших веб-сайтів за допомогою протоколу HTTPS. Це захищає наш сайт та користувачів від зловмисних атак введення та гарантує автентичність.

Перейдіть до менеджера сертифікатів в консолі AWS і запитуйте новий публічний сертифікат (це безкоштовно). Вам буде запропоновано ввести доменні імена, які ви хочете захистити.

Перш ніж сертифікат може бути виданий, Amazon повинен мати можливість підтвердити, що ви є власником зазначених доменів.

Ви можете вибрати один із двох методів перевірки: електронна пошта або DNS.

Як правило, електронна пошта простіша, але вам потрібно забезпечити доступ до електронної пошти, яка використовується для реєстрації домену. Як варіант, якщо ви використовували Amazon Registrar і ​​Route53, ви можете вибрати метод DNS. Це вимагає від вас додавання певних наборів записів до розміщеної зони, але це в основному для вас автоматизовано, тому це досить просто.

It can take a few minutes for the certificate to be issued after validation.

When its all done we can continue to the final step!

Configuring CloudFront

For the final step we are going to use CloudFront which allows us to use the new SSL certificate to serve the website with HTTPS. CloudFront also speeds up the distribution of web content by storing it at multiple edge locations and delivering from the closest edge location to a user.

We need two new web distributions, one for each S3 bucket. Head to CloudFront in the AWS Console and create the first web distribution.

There are lots of settings available to create a web distribution, but for the basics we only need to change five:

  1. Origin Domain Name: Set this to the S3 website endpoint for one of the buckets. Important: This field will give you some auto-complete options with your S3 bucket names. However, using these can cause issues with redirecting to the bucket endpoint. So instead use the bucket endpoint directly.
  2. Origin Id: This populated for you when you enter Origin Domain Name.
  3. Viewer Protocol Policy: Set to “Redirect HTTP to HTTPS”.
  4. Alternate Domain Names: This should match the name of the S3 bucket you’re pointing to. For example “mywebsite.com”.
  5. SSL Certificate: Select “Custom SSL Certificate” and select your new certificate from the dropdown.

Do this again for the second S3 bucket.

The distributions can take a while to spin up, so while we wait, let’s do the finishing steps.

Back in S3, go to your secondary bucket (www.mywebsite.com), in the Properties tab and under Static Website Hosting set the redirect protocol to HTTPS.

Finally, head back to Route53. We need to update the custom A records we created to now target the CloudFront distributions rather than the S3 buckets. For each record, change the Alias Target and select the CloudFront distribution available in the dropdown.

Note: Again, if you are using another DNS service you’ll need to go update the CNAME record from there to point to the CloudFront domain name.

And there you have it! Your beautiful website is now available at the custom domain and served with HTTPS!

Thanks for reading! I hope this guide was useful and enjoyable, I’d love to know if you found it helpful.