UDP / TCP сервер в AWS - PullRequest
       3

UDP / TCP сервер в AWS

0 голосов
/ 16 октября 2018

Я использую IoT Core для получения петиций MQTT и HTTP

Теперь я хочу использовать что-то похожее на облачные сервисы Azure, чтобы все время прослушивать устройства, которые отправляют мне данные через UDP / TCP * 1003.*

Можно ли использовать лямбда-функцию?Может быть, это будет слишком дорого, потому что его можно вызывать тысячи раз в день.

Если я использую EC2, как я могу это сделать, чтобы получить и затем отправить эти данные, например, в S3 / DynamoDB?

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Лямбда-функции не могут прослушивать UDP или случайные TCP-порты.Вы сможете использовать только Lambda (в сочетании с API-шлюзом) для обработки сообщений HTTPS.

Вам понадобится использовать EC2 или, возможно, одну из служб контейнеров, которые работают на EC2, например ECS или EKS.

0 голосов
/ 17 июля 2019

Для тех, кто видит это после июля 2019 года, Amazon выпустила поддержку UDP для своих «Балансировщиков сетевой нагрузки».

https://aws.amazon.com/blogs/aws/new-udp-load-balancing-for-network-load-balancer/

Используя это решение, вы сможете настроить балансировщик сетевой нагрузки на получение пакетов UDP от ваших полевых устройств, а затем направить их одной или нескольким целевым группам.'(в данном случае это могут быть экземпляры EC2 или группы автоматического масштабирования).

Вам все равно нужно написать пользовательскую службу, которая распознает формат сообщений UDP от ваших устройств, и анализирует ее в формате сообщений, который AWSIoT ядро ​​понимает.Эта настраиваемая служба будет работать на любых экземплярах в целевой группе, которая получает трафик от вашего балансировщика сетевой нагрузки.

Основное преимущество здесь по сравнению с представлением одного экземпляра EC2 заключается в том, что вы можете вносить изменения вваш код парсинга / получения UDP, загрузите новый ящик с этими изменениями и перенесите трафик в новый экземпляр без прерывания обслуживания.Вы также получаете некоторую избыточность (можно распределить балансировщик сетевой нагрузки по нескольким зонам доступности, а также заставить несколько целевых групп прослушивать входящие сообщения UDP).

0 голосов
/ 16 октября 2018

Чтобы ответить на ваш вопрос в названии темы, вы можете воспользоваться несколькими решениями, но это предпочтение и конкретный вариант использования, который вы бы выбрали:

  1. Вы можете сделать это с помощью лямбдкак вы упомянули, цена не будет высокой вообще, поскольку вы получаете 1 миллион звонков в месяц бесплатно, а затем 0,20 $ за 1 миллион звонков после.Вы можете прочитать больше об этом с ценами здесь: https://aws.amazon.com/lambda/pricing/
  2. Вы можете использовать потоки Kinesis, что было бы проще реализовать, я бы предположил.
  3. Вы также можете использовать SQS, который являетсятак, как выберет большинство людей, и это самый простой способ сделать то, что вы хотите здесь.

Вам следует ознакомиться с этими услугами, а затем решить, какая из них лучше всего подойдет вам.

Я также предлагаю вам прочитать этот урок: https://www.kevinhooke.com/2017/11/22/aws-iot-retrieving-sqs-messages-from-a-queue-using-an-iot-rule-and-a-lambda-function/

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...