Пару месяцев назад я прокрутил мою твиттер и наступил на этот маленький драгоценный камень:
В то время я изучал для сертификации AWS, и со временными ограничениями, которые они были, я подал облако возобновить вызов в моем мозге как «прохладная идея, но нет благодарности». После того, как я сдал экзамен в начале июля, я снова начал думать о вызове. Принимая тест — это одно, на самом деле что-то делать с этим знанием — другое. Таким образом, с менее чем в месяц осталось до крайнего срока вызова, и вооружен множеством теоретических знаний и очень мало опыта кодирования, я сказал: «Пойдем!»
Требования к проблеме были следующими:
- Получите сертификацию AWS (сделано!)
- Создать сайт резюме, используя HTML
- Используйте CSS для стиля сайта
- Проводят сайт, используя AWS S3
- Используйте HTTPS для безопасности, используя AWS CloudFront Distribution
- Купите пользовательское доменное имя и настройте DNS, используя маршрут AWS 53
- Напишите какой-нибудь JavaScript, чтобы создать счетчик ударов для сайта
- Настройте базу данных Dynamodb, чтобы сохранить счет
- Создайте API и функцию AWS LAMBDA, которая свяжет между веб-сайтом и базой данных
- Написать функцию лямбда в Python
- Написать и внедрить тесты Python
- Разверните стек, используя инфраструктуру-как код, не нажав в консоли AWS
- Используйте контроль источника для сайта через GitHub
- Реализуйте автоматический CI/CD для переднего конца
- Реализуйте автоматический CI/CD для заднего конца
- Написать блог Опубликовать О опыте
Первые несколько шагов были относительно легкими. Узнав 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»