Hello World

Опять начал вести блог. Прикупил, как видите, модный домен: boole.space. И чтобы совсем уже угареть решил использовать модный нынче подход со static websites. Так что этот блог сгенерен с помощью hugo.

Ну и чтобы совсем быть модным, решил захостить все на aws. Причем, не какой-то там EC2 виртуалке, а по хипстерски замутить все на сервисах! Получилось адово.

Вот краткое описание того, как все работает:

  1. Пуш нового контента в приватный репозиторий на github.
  2. Код подхватывает Code Build, после чего генерирует сайт Билдится все естественно в докере в каком-то стоковом образе. Для тех кому интересно вот содержимое buildspec.yml:
    version: 0.1
       
    environment_variables:
      plaintext:
        HUGO_VERSION: "0.65.3"
        HUGO_SHA256: "3d720188e575fb3afffefe33df769dc1832d3a843c02119a01e30febd15c9dae"
        CLOUDFRONT_DIST_ID: ""
       
    phases:
      install:
        commands:
          - curl -Ls https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.tar.gz -o /tmp/hugo.tar.gz
          - echo "${HUGO_SHA256}  /tmp/hugo.tar.gz" | sha256sum -c -
          - tar xf /tmp/hugo.tar.gz -C /tmp
          - mv /tmp/hugo /usr/bin/hugo
          - rm -rf /tmp/hugo*
      build:
        commands:
          - hugo
      post_build:
        commands:
          - aws cloudfront create-invalidation --distribution-id=${CLOUDFRONT_DIST_ID} --paths '/*'
       
    artifacts:
      files:
        - "**/*"
      base-directory: public
    

    Скажите, а вы тоже любите этот прикрасный yaml мир без богомерзкого xml? Ответы в комментариях, если я их правильно настроил. =)

  3. Затем сгенирированный статический html выкладывается на s3. И казалось бы все? Можно по урлу на s3 зайти в бакет(нет).
  4. Теперь на мой бложик приходит пользователь. И тут самя мякотка
  5. Домены управляются Route 53.
  6. Сертификат для https выдан Certificate Manager.
  7. Чтобы прикрутить сертификат и https к блогу используется Cloud Front.
  8. Но, это еще не все! Чтобы у вас строились правильно урлы, как на вебсервере и post/ вело на post/index.html нужа ЛЯМБДА. Хорошо, что её можно найти прямо на aws в репозитории.

В итоге вышло как-то так(5 aws сервисов и одна лямбда):
Scheme with my blog working principal
Но, если быть честным, то вышло вот так: Bread loaf trolley

В итоге, не страдайте херней, как я. Лучше взять виртуалку и сделать все по старинке или с помощью AWS Amplify. И проще и быстрее. Но, если кто-то хочет повторить, то вот вам список ссылок на статьи, которые помогли в процессе:

Было весело. Опыт работы с aws получен, но вам не советую так делать. Всем хорошего дня.

comments powered by Disqus