Рубрики
Uncategorized

Облако возобновить вызов: как я влюбился в Сэм

Пару месяцев назад я прокручивала свой твиттер и наткнулся на этот маленький драгоценный камень: … Помечено с AWS, CodeNewie, Serverless, Devops.

Пару месяцев назад я прокрутил мою твиттер и наступил на этот маленький драгоценный камень:

В то время я изучал для сертификации AWS, и со временными ограничениями, которые они были, я подал облако возобновить вызов в моем мозге как «прохладная идея, но нет благодарности». После того, как я сдал экзамен в начале июля, я снова начал думать о вызове. Принимая тест — это одно, на самом деле что-то делать с этим знанием — другое. Таким образом, с менее чем в месяц осталось до крайнего срока вызова, и вооружен множеством теоретических знаний и очень мало опыта кодирования, я сказал: «Пойдем!»

Требования к проблеме были следующими:

  1. Получите сертификацию AWS (сделано!)
  2. Создать сайт резюме, используя HTML
  3. Используйте CSS для стиля сайта
  4. Проводят сайт, используя AWS S3
  5. Используйте HTTPS для безопасности, используя AWS CloudFront Distribution
  6. Купите пользовательское доменное имя и настройте DNS, используя маршрут AWS 53
  7. Напишите какой-нибудь JavaScript, чтобы создать счетчик ударов для сайта
  8. Настройте базу данных Dynamodb, чтобы сохранить счет
  9. Создайте API и функцию AWS LAMBDA, которая свяжет между веб-сайтом и базой данных
  10. Написать функцию лямбда в Python
  11. Написать и внедрить тесты Python
  12. Разверните стек, используя инфраструктуру-как код, не нажав в консоли AWS
  13. Используйте контроль источника для сайта через GitHub
  14. Реализуйте автоматический CI/CD для переднего конца
  15. Реализуйте автоматический CI/CD для заднего конца
  16. Написать блог Опубликовать О опыте

Первые несколько шагов были относительно легкими. Узнав HTML/CSS давно, форматирование моего резюме и получение первоначального index.html и CSS готовы заняли меньше дня. В интересах времени — и потому, что HTML/CSS не является основным направлением этого проекта — я нашел хороший шаблон Bootstrap для использования для моего сайта и модифицировал его по мере необходимости.

Next Up купил мое доменное имя, настроить роли и разрешения IAM, создавая ведро AWS S3 для размещения файлов, создавая распределение CloudFront для обеспечения безопасности и распространения веб-трафика и правильно настраиваемым маршрутом 53 DNS. Я сделал все это много раз, прежде чем готовиться к сертификации, поэтому он также прошел гладко.

Я решил немного пропустить и работать над развертыванием бессвезвенных ресурсов, которые мне нужно для бэкэнда сайта. Я хотел попробовать то, что я не использовал раньше, поэтому я начал исследовать модель приложения без сервеса AWS (SAM), которая использует AWS CloudFormation для развертывания стеков ресурсов через инфраструктуру-как-код. Пока я проходил через официальную документацию AWS SAM, Крис Надя пришел в муфту со своим блоге Получите ногу в дверь с Сэмом Отказ Серьезно люди, это именно такая запись документации и контента, которая вдохновляет и мотивирует Newbies облаков. Однажды я прошел по своему учебнику, все это имеет смысл. В течение дня или двух я не только создал свой первый стек через код и AWS CLI, но я выдул всю работу, которую я ранее сделал с передним концом и правильно построил его в стек в стек.

Как только я получил стек, начал использовать Сэм, я играл с ним в течение нескольких дней. Я добавил базу данных dynamodb, внесенные изменения, удаленные ресурсы, узнали, как устранять неполадки ошибок, то я удалил весь стек и снова перестроил его с самого начала. Документация AWS была чрезвычайно полезной здесь, так как я нашел бы то, что мне нужно будет изменить в консоли AWS, а затем пройти документацию, чтобы узнать, как это сделать через код. К концу я редко смотрел на консоль вообще. Возможность сохранить код вашего конфигурации, версию IT, и построить/изменить/удалять ресурсы так быстро и легко было моей любимой частью этой проблемы. Я абсолютно влюбился в волшебство инфраструктуры — как-код с помощью SAM/CloudFormation, и я не могу дождаться, чтобы сделать больше с этим.

С ветром в моих парусах и видя все, что начинает собраться вместе, пришло время решать более сложные задачи. Я построен, как функция API/Lambda Function/Database будет стоить, сломал его в небольшие куски и работал назад, начиная с DynamOdb. Я решил написать свой код, чтобы воспользоваться преимуществами функции атомной счетчики DynamoDB, чтобы отслеживать количество посещений сайта, и я настроил простой ключ раздела и схема на таблице, потому что мне нужно только отслеживать, что один элемент.

В конце концов я понял кодирующую функцию лямбда благодаря некоторым учебным пособиям Python, полезным человеком на переполнении стека и много экспериментов. Это было легко самым разочарованным частью проблемы из-за моего отсутствия предыдущего опыта кодирования Python, но и где я узнал больше всего, и где я получил свою самую большую победу в конце. К сожалению, я не могу показать вам именно то, что похоже, так как другие все еще работают над вызовом, но доверяют мне, под приведенной ниже картины был красивый фрагмент кода Python. Это разговаривало с базой данных и подсчеты, но я еще не был закончен.

Когда-то у меня был API, лямбда и diankodb, работая вместе, мне нужно было написать какой-нибудь JavaScript на передней части, чтобы позвонить в API. К этому моменту я был в большем количестве кодирования мышления, так что это было быстро быстро, пока не ударим ошибку страшных перекрестных ресурсов (CORS). К счастью, я использовал лямбда прокси в моем API, и после некоторых исследований я узнал, что я могу пройти соответствующие заголовки COR из самой лямбда. Такое элегантное решение для такого злого маленького камнем блок. Также так, у меня был рабочий удар!

Я сделал перерыв на день или два, а затем пришло время завершено этот проект. Последние требования создавали тесты Python Unit, а также реализуют Ci/CD для поддержания стека. Я экспериментировал как с Действием GitHub, так и AWS CodePipeline, и закончился идти с действиями GitHub. Настройка CI/CD для переднего конца было простым — я настроил мою репозиторий GitHub и настроил его, чтобы синхронизировать обмениваться репозитором на S3.

CI/CD для заднего конца был значительно сложнее, поскольку мне нужно было настроить несколько этапов для установки зависимостей Python, Lint код и тестируйте код с Pтойцами до фактического наращивания и развертывания кода. При написании теста Python я обнаружил, что используя мото Библиотека для Mock AWS Resources Resources был фантастическим способом проверки моего кода базы данных, не рискуя изменения в производстве. В тот момент, когда я наконец видел все зеленые галочки на разных этапах, я Май выпрыгнули из моего стула.

С этим завершено, я выполнил все технические требования проекта, а с этим постом блога я официально сделан! Вы можете увидеть результаты на https://stacystipes.com. .

Весь этот опыт был чрезвычайно вознагражден. Часы, которые я провел каждую ночь, идущий вниз по дырам в Google кролика, экспериментируя с кодом, и настроить различные компоненты AWS, просто затвердев и построен на знаниях, которые я собирался в задачу. Что еще более важно, я узнал о важности разрушения сложных проблем на небольшие управляемые кусочки и не отдавая разочарование, когда возникают ошибки. Это клише Но это правда: если вы не делаете ошибки, вы не учитесь! Наконец, я обнаружил, что я действительно, очень нравится работать над проектами, как это, и я особенно люблю кодирование. Как только я попал в поток, я бы полностью потерял время, потому что у меня было так весело с этим.

Я хочу сказать большое спасибо за Форрест Бейаль Для создания проблемы, чтобы помочь тем из нас, кто новый до облачного развития, а также огромный крик в фантастическое облачное резюме. Это было так полезно иметь возможность задавать вопросы невероятных наставников AWS и мозговой штурма и поощрять других участников, встречающихся в тех же проблемах.

Что дальше для меня? Больше проектов! Я смотрю в большего количества проектов для работы с сообществом # 100daysofCloud, и у меня есть идеи для проекта или двух, которые я хотел бы разработать на предмет миграции из локальных виртуализированных центров данных для общественных облачных решений. Кроме того, я собираюсь продолжать работать над моими навыками кодирования Python, и начать нырять в Terraform, Docker и Kubernetes. Есть еще много кроликовых отверстий для изучения, и я просто начинаю.

Оригинал: «https://dev.to/stacystipes/the-cloud-resume-challenge-how-i-fell-in-love-with-sam-2ik3»