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

#Cloudguruchallenge – Python, управляемый событиями на AWS – завершен!

15 сентября 2020 года – Форрест Брисол объявил об этом новом вызове. Цель этого вызова – … Tagged с AWS, Cloudguruchallenge, ETL, Python.

15 сентября 2020 года – Forrest Braiseal объявил об этом Новый вызов Анкет Цель Эта задача состоит в том, чтобы автоматизировать конвейер обработки ETL для данных COVID-19 с использованием сервисов Python и Cloud. Так же, как его предыдущий вызов Cloud Resume Challenge Эти проблемы помогут таким людям, как я, у которых нет текущего облачного опыта, ни облачной профессии, чтобы лучше понять облачные технологии и использовать это на ваших интервью или портфолио, чтобы помочь вам получить облачную работу!

Если честно, хотя я занят что -то в то время И у меня нет конкретных знаний о чем -то подобном, это все еще волнует меня и чувствовал, что мне нужно работать над этим испытанием.

Бросить вызов шагам и как я справился с ними

ETL Job Сначала я немедленно открываю консоль AWS, а затем выполняю запланированную задачу обработки, используя правила CloudWatch. Тем не менее, я увидел, что мне нужно построить свою инфраструктуру в качестве кода (IAC) на более поздних шагах, поэтому я сразу же настрою свою среду. Хотя многое не было, как и ожидалось. Ну, я думаю, это относится ко всем вещам, которые вы хотите сделать, первый шаг – самый сложный, но нам нужно продолжать!

Извлечение и преобразование Первоначально я пытался использовать и применить CSV библиотека, которая у Python3 уже есть Но после дальнейшего поиска я увидел, что Панды Библиотека намного лучше при обращении с такими наборами данных. Вот блог Это поможет вам начать.

Очистка кода Я сделал пакет и несколько модуля, чтобы абстрагировать свой код на предыдущих шагах от моего обработчика Lambda. Задача также дала нам подсказку, связывая это Анкет

НАГРУЗКА Я предпочитаю использовать DynamoDB, так как хочу узнать об этом больше и изучить его дальше. Я преобразовал свой преобразованный и чистый кадр данных в JSON, чтобы я мог легко загрузить их в DynamoDB.

for entry in json:
    dynamoDBTableName.put_item(Item={
        entry[x]
})

Уведомление Я сделал дальнейший поиск по этому поводу, прежде чем заняться этим. Сначала я использую потоки DynamoDB с StreamViewType: new_image Затем запустите функцию лямбды, чтобы отправить уведомление с использованием SNS, хотя она работает Но это затопляет мою электронную почту, хотя я установил Packaterize: 1000 (Максимум для потоков DynamoDB). Для моей функции Lambda я заметил, что каждые 10 новых элементов в моей таблице DynamoDB он отправляет уведомление по электронной почте. Я закончил тем, что установил счетчик на своем Putitem петля и отправка уведомления после успеха.

Обработка ошибок Я окружил все шаги преобразования, которые я сделал с помощью Попробуйте/поймать/наконец Пункт для обработки исключений и уведомить заинтересованных пользователей. После этого я сделал две функции, первая – для начальной нагрузки данных в DynamoDB, а вторая – это ежедневные обновления для DynamoDB. Я выполнил операцию сканирования, чтобы проверить, есть ли у моего DynamoDB элементы, и это зависит от результатов сканирования, независимо от того, инициирую ли я начальную нагрузку функции данных или функцию Daily Update. Наконец, я бросаю все строки на свой кадр данных, который имеет НАН или нет значения на Дата столбец, который мой Хэш ключ.

Тест Я много ищу и читаю на Python3 Imports, но все еще получил проблему по импорту моего тестового модуля, поэтому я обращаюсь за помощью к Питон Дискорд И кто -то помог мне понять это Но через некоторое время это все еще не сработало, поэтому я просто продолжаю поставить свой Тест _ ***. py В том же каталоге, где живут моя функция лямбды. На этом шаге я реализовал модульную структуру тестирования, вот видео Чтобы начать вас.

IAC и контроль источника Уже внедрил эти технологии, потому что я считаю, что они являются предпосылками, когда вы начинаете разрабатывать приложение специально в облаке.

Панель инструментов Меня удивило, что Aws QuickSight не поддерживает DynamoDB! Но у меня есть слишком далеко, чтобы изменить свой источник данных и логику.

Хотя есть обходной путь, но они дорогостоящие. Мне потребовалось некоторое время, чтобы решить, буду ли я придерживаться нативных технологий AWS, начну создавать конвейер данных, где я буду использовать Dynamodb Streams -> Lambda -> S3 -> Athena -> QuickSight И, честно говоря, это сложнее, чем я думал, поэтому я искал дальше, и я увидел Таблицу, Qlik и гораздо больше приложений, пока я не нашел Redash, для меня эти 3 приложения выполнят этот шаг Но я выбираю бесплатный. Я выбираю Redash Потому что это даст вам 30-дневную пробную версию без регистрации вашей кредитной карты, в то время как я интегрирую свой источник данных (DynamoDB) в Redash, я также выучил Язык динамического запроса , как говорит название, это Простой язык SQL-ISH для DynamoDB Хотя у меня есть этот инструмент, для меня все еще сложно запросить данные в DynamoDB.

Итак, вот мой простой Redash Приборная доска

Вывод

В конце я знаю, что есть много шагов, где мне не хватает, и есть много вещей, которые мне нужно улучшить. Тем не менее, я выполнил задачу, используя шаги, которые я понимаю. Знание, которое я получил на протяжении всего этого вызова, это ЗОЛОТО Так что я благодарен, что @forrestbrazeal продолжал инициировать такие проблемы.

Так что для моих следующих шагов!

  • Я буду интегрировать CI/CD для этого приложения.
  • До истечения срока действия моего 30-дневного испытания в Redash я продолжу создавать новый конвейер данных и придерживаться нативных технологий AWS, потому что я думаю, что сложность в его построении стоит того.
  • Реализуйте Lambda слои
  • Ввести больше визуализации данных

Кто бы ни увидел эти посты и достигнет конца, спасибо! Я надеюсь, что вы это понимаете, а также расскажите мне о жизненно важных аспектах, которые мне нужны, я открыт для всех ваших предложений!

Оригинал: “https://dev.to/edwardmercado/cloudguruchallenge-event-driven-python-on-aws-completed-3nnm”