Обзор
В этом месяце я видел, что Acloud.Guru собирался начать делать проблемы для продвижения обучения. Задача этого месяца стала приложением Python, управляемое событиями вокруг COVID-19. Вы можете прочитать об этом здесь: https://acloudguru.com/blog/engineering/cloudguruchallenge-python-aws-etl.
Мой проект не пошел так хорошо, как я наденулся, но я думаю, что это способствовало лучшему опыту обучения из-за моих подводных камней.
Ресурсы
Код GitHub: https://github.com/wheleers-websites/CloudguruChallenge_0920.
Диаграмма архитектуры:
Quicksight Dashboard:
Подход
Я прочитал заявление о проблеме и быстро пошел на работу. Это была огромная ошибка, и я глубоко сожалею об этом. Я решил пойти на безсетевой подход и начал кодировать низкоуровневые шаги в Python.
Я думал, что буду использовать DynamOdb, чтобы построить приложение без сердца. Если бы я провел больше времени планирования, может быть, я бы избел возникли проблемы.
Выпуск 1.
Был попросить сделать дополнительную нагрузку. Это разумно. Если ваши исходные данные являются большими, вы не хотите обновлять его снова и снова. Это звучит достаточно просто, но это на самом деле довольно сложно сделать с NoSQL DB, как Dynamodb.
Единственный способ предоставить инкрементную функциональность нагрузки будет сканировать всю таблицу перед каждой нагрузкой. Это дорогое и много времени. Затем я обнаружил, что метод Putitem I использовал, перезаписывает данные, если она уже существовала для раздела ключа и поняла, что быстрее и дешевле перезагрузите весь набор данных каждый день. Так что я продолжил …
Выпуск 2.
Я решил использовать Quicksight для моего слова визуализации, пытаясь придерживаться AWS-принадлежащих услугам. К тому же Quicksight было намного дешевле, чем на первый взгляд.
К сожалению, QuickSight не поддерживает DynamOdb в качестве собственного источника данных. Это означает, что мне придется снова перемещать свои данные, прежде чем я смогу его визуализировать.
Я изначально посмотрел на использование потоков DynamOdb и Kinetica Firehose, чтобы накормить данные в S3, но я решил, что это будет намного проще и проще, если я просто обновил свою функцию лямбда, чтобы написать файл json на S3 после обновления dynamodb.
https://aws.amazon.com/blogs/database/automatically-archive-items-to-s3-using-dynamodb-time-to-live-with-aws-lambda-and-amazon-kinesis-firehose/
Конечно, это решит все!
Выпуск 3.
Больше боли с Quicksight вскоре последовали, когда я обнаружил, что Quicksight не позволяет публичным приборными панелями. Если бы я хотел сделать мою приборную панель видимой другим, мне нужно:
- Написать приложение
- Настройте аутентификацию для этого приложения с некоторой службой, такими как Cognito
- Встроить мою приборную панель Quicksight в это приложение
Все эти задачи казались слишком много для этой простой проблемы. Таким образом, вы получаете статическое изображение приборной панели только я наслаждаюсь.
Лучший путь
Чем дальше я попал в мое приложение, тем больше я начал думать о том, что я бы сделал, если бы я провел больше времени планирования.
- Я бы заметил эти проблемы, прежде чем начал?
- Я бы пошел в другое направление?
Я хотел бы подумать, что ответ на оба эти вопросы – да, но я никогда не узнаю.
Я думал об использовании Aurora Serverless вместо DynamOdb, за исключением того, что он должен быть в VPC, несомненно, усложняет вещи.
- Лямбда должен быть в VPC
- Я должен создать VPC
- Я должен создать подсеть (ы)
- Я должен создать группу безопасности (ы)
- Я должен создать список (ы) контроля доступа к сети
- Я должен перейти на Castsight Enterprise для доступа к ресурсам VPC
https://docs.aws.amazon.com/quicksight/latest/user/working-with-aws-vpc.html
Вывод
Я действительно не уверен, почему я пошел так, как я сделал, хотя это был веселый опыт, независимо от. Я очень заинтересовался, чтобы увидеть, что другие люди делают для своей проблемы и даже более заинтересованы, чтобы увидеть, что повлечет за собой октябрь #cloudguchallenge.
Однако одна вещь, однако, что я обязательно потрачу достаточно времени, планируя все, прежде чем начать на моем следующем проекте. Неважно, что это может быть.
Оригинал: “https://dev.to/wheelerswebsites/my-september-cloud-guru-challenge-experience-l2j”