У меня довольно похожий вариант использования; однако все зависит от размера проекта и от того, как вы хотите принять решение о надежности и будущем решении.
В качестве первой итерации то, что вы описали выше, похоже, работает и является разумным подходом, но, как вы отметили, довольно основательно и неуклюже. Если внешние данные - это то, что вы будете постоянно поглощать и можете предвидеть их рост, я настоятельно рекомендовал бы сначала спроектировать систему передачи данных, я бы рекомендовал либо использовать службу формирования озера AWS, либо, если вам нужен больший контроль, и создать основу, используйте что-то вроде 3x3x3 подхода.
При проектировании вашей базы данных правильное управление данными в будущем станет намного проще и приятно разделит ваши файлы для будущего использования / погружения в данные.
Поскольку архитектура высокого уровня будет выглядеть примерно так:
- Lambda получает запрос от источника и вставляет в s3
- Система обработки данных обрабатывает файловые и автоматические разделы + теги
тогда
В зависимости от того, как быстро вам нужно визуализировать ваши данные, и, если это большие объемы данных, потенциально используйте
AWS клей pyshell или pyspark вместо lambda. Который будет обрабатывать ваши панды / numpy намного чище.
Я бы также порекомендовал конвертировать ваши файлы в паркет, если вы используете Athena или его эквивалент для повышения скорости запросов. Помните, что разбиение файлов важно для производительности!
Обратите внимание, что приведенное выше предназначено для довольно надежной системы приема и может быть излишним, если у вас есть базовый сценарий использования c с нечастым использованием данных.
Если ваши данные находятся в небольших пакетах, но очень часто, вы можете даже использовать слой кинезиса перед лямбда-шагом s3 для более организованной передачи данных. Вы также можете использовать redshift для размещения ваших файлов вместо S3, если вы хотите более современное складское решение. Однако, если у вас есть x источников, я бы предложил для простоты использовать s3.