Рубрики
Без рубрики

Cloud Resume Challenge: обнаружение силы AWS

Недавно я наткнулся на форум в Интернете, рассказывая о проектах, которые люди сделали, чтобы продемонстрировать … Tagged с помощью AWS, DevOps, Server, Python.

Недавно я наткнулся на форум в Интернете, рассказывая о проектах, которые люди сделали, чтобы продемонстрировать свои навыки в облаке. Один комментатор связал сообщение под названием «Cloud Resume Challenge от Forrest Brazeal», и это заставило меня любопытно. Позже в тот же день я обнаружил, что погрузился в новой проект, который действительно проверил мои новые знания AWS для MAX!

Я начал этот проект, так как хотел что -то иметь в своем резюме, которое продемонстрировало мои недавно приобретенные знания с сдачи 3 экзаменов AWS. Не исходя из ИТ-фона, я гордился тем, как далеко я зашел уже в этом году, после использования блокировки COVID-19 в качестве шанса покинуть карьеру с работы в области исследования рынка. Тем не менее, я хотел получить немного более практичную с платформой AWS и получить какой-то ценный практический опыт.

Я был в хорошей позиции концептуально, так как я сдал два экзамена AWS, которые больше всего помогли бы с этим проектом, на мой взгляд (архитектор решений и разработчик) – это был лишь случай, когда я научился на практике. Легко, верно?!

Проекты – отличный способ укрепить то, что, по вашему мнению, вы знаете, и прочитав очень расплывчатые инструкции по вызову, я подумал, что этот проект применит на практике все, что я узнал до сих пор в этом путешествии.

Cloud Resume Challenge включает в себя создание веб -сайта без сервера с использованием облачной инфраструктуры AWS. Вы должны размещать свой веб-сайт в S3 за сетью доставки контента, CloudFront, а затем использовать инфраструктуру как код (IAC) для бэкэнда. Затем вам следует создавать практику непрерывной интеграции/непрерывного развертывания (CI/CD) как в вашем фронте, так и в бэкэнд, чтобы обновлять обновления проще, быстрее и, самое главное, автоматическое! Бэкэнд был использован для обновления количества посетителей на моей веб -странице, и поэтому он также будет включать небольшой JavaScript на моем фронте. Я не использовал JavaScript раньше, так как вместо этого я узнал основы Python в блокировке, так что было бы интересно изучать новый синтаксис и как делать API на другом языке программирования.

Внешний интерфейс

Я уже создал веб -сайт во время блокировки через изучение небольшого HTML и CSS и просмотрела учебные пособия, но я добавил еще одну вкладку в свою навигационную панель с моим резюме. Я отбросил шаблон, который мне понравился в Интернете, и интегрировал свое резюме, которое я отправил рекрутерам на мою веб -страницу. Это было очень захватывающе, так как я уже думал о том, как я мог рассказать миру о своем новом проекте и, надеюсь, сыграть эту первую роль в облаке! Я закончил, кодируя, что мой джавазиппирный посетитель считается шаблоном, готовым для вставки моего API, как только я его создал.

Мой сайт уже был размещен в S3 и с использованием маршрута 53 и может быть найден в www.joshmearsportfolio.com (Тонкая заглушка я знаю!). Однако как часть задачи мне нужно было использовать HTTPS для безопасности. Здесь появилась Cloudfront, и я смог установить это без особых проблем.

Затем я подтолкнул свой код в свой репозиторий GitHub и создал «CodePipeline» для моей передней работы, чтобы любые изменения, которые я внес в код, автоматически синхронизировался с моим S3 Bucketing Hosting My Weats. Это было мое первое практическое использование инструментов CI/CD, и я сразу же увидел преимущества – это было очень полезно! У меня не было слишком большого опыта работы с GIT в этот момент, поэтому этот процесс также был отличным для изучения некоторых из основных команд и привыкания к тому, чтобы выдвигать новые версии в мою основную ветвь – было здорово видеть их почти мгновенно, как только я обновлю свой Веб -страница в моем браузере тоже!

Через этот шаг я тоже много узнал о поведении кэширования. Когда я изменил свой код JavaScript, чтобы воспроизвести и привлечь к своей базе данных тестовой базы, я не видел этих изменений на своем веб -сайте, потому что CloudFront кэшировал мой старый файл .js. После некоторого поиска я понял, что, поскольку теперь я настроил свой веб -сайт за CloudFront, любые изменения, которые я внес, с использованием моего трубопровода не будут видны в моем браузере в течение 24 часов, пока кэш не будет очищен. Я вручную невидил кэш для соответствующих файлов и видел, как мои изменения распространяются. При ранее тестировав свой трубопровод, я не поднял это при изменении своего веб -сайта, когда менял файл index.html (объект ROOT по умолчанию). В целях развития и желания поиграть с изменениями на моем веб-сайте и увидеть, как они разыгрываются, я практиковал изменение «максимального возраста». Это был еще один хороший момент для меня, так как я понял, что AWS -сторона вещей из учебы и использовал мои знания на практике!

Бэкэнд

Далее было то, что я считал сложной частью. Не исходя из ИТ -фона, я обнаружил, что эти шаги очень пугающими, несмотря на то, что уже сдали 3 экзамена AWS. Все очень хорошо иметь хорошую основу в концепциях и теоретических знаниях, но применение его на практике будет намного сложнее – именно поэтому я принял этот вызов!

Я составил план того, что я хотел сделать, нарисовав простую схему потока (что было легкой частью, прошедшей как решающего архитектора, так и экзаменов разработчиков!). Затем я сыграл в консоли и создал свой бэкэнд вручную, чтобы проверить свой API JavaScript API, а также написать и проверить свою функцию Python Lambda. Это был отличный способ лучше познакомиться с различными услугами и отряхнуть некоторые из моих навыков Python, которые я узнал в начале блокировки. Я прочитал много документации AWS, чтобы изучить некоторые команды в DynamoDB (моя база данных без сервера) и посмотреть, как интегрировать API Gateway.

Была пара “Doh!” Моменты для меня, один из которых заключается в том, что я не понимал, что вам нужно было нажать «развернуть» в консоли, чтобы сохранить какие -либо изменения в ваш код лямбда, прежде чем снова тестировать. Благодаря обучениям я привык иметь кнопку «Сохранить», и с тех пор, как консоль была обновлена, это было изменено и было достаточно, чтобы отбросить меня на некоторое время!

После просмотра нескольких видео на YouTube и многого Googling, я в конце концов закончил свой полностью функционирующий веб -сайт с бэкэнд без сервера!

Но этого было недостаточно. Далее было изучение, как развернуть мой бэкэнд в качестве инфраструктуры как код!

Для этого мне пришлось научиться использовать AWS SAM (без сервера CloudFormation). Это была моя любимая часть всего проекта, так как потребовалось много внимания к деталям и продемонстрировало, насколько мощная инфраструктура как код. AWS SAM дает вам возможность развернуть и удалять услуги относительно легкостью, как только у вас установлен шаблон.

Чтобы снова практиковаться, я использовал шаблонный проект из документации AWS, чтобы увидеть, как все это работает, и изучить команды SAM. Как только я почувствовал себя комфортно с этим, я взломал, написав свой собственный файл шаблона. Это потребовало большого терпения, поскольку вдательство YAML не очень прощается! Кроме того, убедиться, что все мои ресурсы ссылались друг на друга правильным образом, было сложно. Я многому научился во время этой части проекта, и это заставило меня почувствовать, что все стоит принять этот вызов. Документация и Googling были намного более плодотворными для части SAM, и хотя это заняло некоторое время (и множество сообщений об ошибках!) Мне удалось построить свой шаблон и развернуть свой бэкэнд.

Для тех из вас, кто ничего не развернул с AWS SAM раньше, и такие новички, как я, я рекомендую следующую ссылку, чтобы вы начали:

SAM Server Server Hello World App

Это YouTube видео Также отличный учебник для понимания преимуществ без серверов и диаграмм, объясняющих Сэма и как его использовать. Это может быть полезно для тех, кто еще не учился ни на одном из экзаменов ASSS!

Наконец, я также рекомендую YouTube Channel ‘ FOOBAR SERVERLESS «Для лучшего понимания Сэма и узнать больше о написании файла шаблона.

Несмотря на то, что мне удалось развернуть свой бэкэнд без сервера, я столкнулся с большим количеством проблем с количеством посетителей и интегрировал бэкэнд с фронталом. API Gateway не работал поначалу, так как выход из моей функции Lambda не был в правильном формате (ошибка 502). После нескольких долгих ночей в Google я прочитал, что DynamoDB имеет ошибку, которая иногда заставляет запрашивать запросы на «десятичный» формат. Это было чрезвычайно разочаровывающим, так как это означало, что мой шлюз API не любил формат моей лямбда -вывода, так как он ожидал чистого, простого JSON. Я хотел продолжать и получить правильный формат и нашел пакет SimpleJson, который должен был решить эту проблему в Python. Я выяснил, как реализовать это локально, но нужно было изучить слои Lambda, чтобы иметь возможность импортировать модуль SimpleJson в мою функцию. Спускаясь по нескольким кроличьим отверстиям и проведя некоторые исследования, мне удалось развернуть и настроить слой, но все еще получал ошибку! Lambda Layers – это то, что я все еще изучаю, но с целью простого желания получить количество посетителей в правильном формате, я подал в отставку, чтобы выбрать какой -то код Python, который я нашел в переполнении стека, который сортил бы проблему! Это был большой опыт узнать больше о Lambda -слоях, хотя Так что я счастлив, что наткнулся на эту проблему!

Еще одна проблема, с которой я столкнулся при написании моего файла шаблона SAM, была признала CORS на протяжении всего моего бэкэнда. Во время игры в консоли, это просто один щелчок, чтобы включить CORS, но при использовании SAM было не так просто. Это включало настройку моих ответов от Lambda с правильными заголовками/происхождением и возвращением их на мой веб -сайт через API Gateway и мой код JavaScript в правильном порядке – вы потратите немного времени на поиски ответов, если вы этого не делали раньше!

CI/CD

Наконец, после того, как мой проект полностью работал, мне пришлось внедрить CI/CD в свой бэкэнд. Поскольку я использовал собственные инструменты CI/CD от AWS для Frontend, я решил использовать действия GitHub для бэкэнда, чтобы узнать несколько различных инструментов и получить большее влияние на различные практики. Я раньше использовал GitHub, но никогда не сталкивался с действиями GitHub, так что это было для меня новым. Опять же, документация была очень полезна для этого процесса и помогла объяснить, что нужно, чтобы настроить «рабочий процесс». Он включал в себя написание файла шаблона, который будет вызван подтасовкой в моем репозитории на бэкэнд. После нескольких поздних ночей мне удалось получить это работать и снова осознал преимущества этого настроения для будущего тестирования и обновления. В рамках этого окончательного процесса я написал тест на Python, используя Pytest, который проверил 200 кода статуса из моей функции лямбда. После прохождения вся моя бэкэнд -инфраструктура будет упакована и развернута с использованием причудливого действия GitHub!

Последние слова

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

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

Если кому -то понравилось читать это и хочет протянуть руку, не стесняйтесь общаться со мной на LinkedIn или напишите мне по адресу joshmears169@hotmail.com .

Оригинал: “https://dev.to/joshmears169/the-cloud-resume-challenge-discovering-the-power-of-aws-1n4f”