Отправка данных из AWS IoT в базы данных

#amazon-web-services #aws-lambda #aws-iot #amazon-aurora #aws-documentdb-mongoapi

#Amazon-веб-сервисы #aws-lambda #aws-iot #Amazon-Aurora #aws-DocumentDB-mongoapi

Вопрос:

У меня к вам вопрос. Я новичок в AWS IoT, AWS ES и MQTT. Я последовал этому замечательному руководству и закончил его. Я отправил данные в формате JSON в AWS IoT с помощью функции AWS Lambda. Затем в AWS IoT я создал правило для отправки этих данных в AWS Elasticsearch. В конце концов, я визуализировал данные с помощью Kibana.

Моей следующей задачей является хранение этих данных в 3 различных типах баз данных: реляционной БД (Amazon Aurora), БД значений ключей (Amazon Dynamo DB) и БД документов (Amazon Document DB). Но, как вы знаете, AWS IoT, как правило, не предоставляет этих опций. Он предоставляет только опцию «Вставить сообщение в таблицу DynamoDB». В таком случае, как я могу создавать другие базы данных и отправлять данные из AWS IoT? Есть ли какой-либо источник или учебное пособие, которое вы можете мне предложить по этому поводу?

Я был бы очень рад, если бы опытные люди могли помочь мне 🙏 Большое спасибо! 😊

(К вашему сведению: в моем elasticsearch нет VPC. Я использую общедоступный доступ. До сих пор я не использовал EC2.)

Комментарии:

1. Вам нужно будет выполнить некоторое программирование в вашем Lambda, чтобы поместить данные в три хранилища данных. Какую среду программирования вы обычно используете?

2. @stdunbar я могу использовать Python, Java, JavaScript. Есть ли у вас какой-либо пример подобной лямбда-функции?

Ответ №1:

Наиболее распространенным способом вставки данных AWS IoT в базу данных является настройка IoT для отправки сообщений в лямбда-функцию AWS. Внутри функции Lambda вы подключаетесь к своей базе данных и вставляете данные точно так же, как при любом другом взаимодействии с базой данных.

Комментарии:

1. Вы уверены? для высокой скорости передачи данных — вы могли бы превысить лимит вызовов — возможно, было бы лучше пакетировать их в Firehose -> s3, а затем обрабатывать их пакетами. Кроме того, если произойдет сбой IOT lambda, вы потеряете свое сообщение.

Ответ №2:

Вы можете использовать AWS IoT Analytics для хранения сообщений в корзине S3. Простой конвейер (без преобразований) будет хранить входящие сообщения в сжатом формате, а выходные данные в json.gz файлы, названные по данным / метке времени. Если вы настраиваете IoT Analytics с помощью пользовательских сегментов S3, вы можете настроить политику хранения сегментов на истечение срока действия старых данных.

Вы можете написать некоторый код для чтения выходных файлов конвейера аналитики и поместить их в любое хранилище данных, которое вы хотите.

Или вы можете просто отправлять сообщения в лямбда-функцию, чтобы они подключались и сохраняли сообщения в базе данных. Преимущество использования конвейера аналитики заключается в том, что вы можете продолжать получать / сохранять сообщения MQTT, если у вас простои базы данных или вы развертываете код приема базы данных с ошибками.

Комментарии:

1. Не могли бы вы подробнее рассказать о «Преимуществе использования конвейера аналитики в том, что вы можете продолжать получать / сохранять сообщения MQTT, если у вас простои базы данных или вы развертываете код приема базы данных с ошибками». — Вы имеете в виду, что конвейер будет ставить в очередь все сообщения, отправленные на лямбда-выражение, если база данных не работает?

2. Конвейер продолжит хранить сообщения IoT в своей корзине S3. Вам нужно будет реализовать свою собственную логику в вашем Lambda для чтения сообщений из этой корзины S3 и ввода их в базу данных и т. Д. Например, вы можете создать очередь SQS, которая заполняется объектами S3, хранящимися в корзине вывода конвейера S3, затем ваш лямбда-код может удалять элементы из очереди после их успешного приема.