Запуск процесса в качестве демона в инфраструктуре AWS

Я хотел бы запустить процесс в качестве демона в инфраструктуре AWS, который отвечает за чтение очереди AWS SQS и выполнение некоторого процесса.

Мой первый подход заключается в использовании док-контейнера, развернутого в службе контейнеров ECS. Так что я буду на while true loop, посплю несколько секунд. Используя это, я могу контролировать время ожидания между обработками, поэтому, если моя очередь SQS заполнена, я могу уменьшить время ожидания. Так

Я знаю, что можно использовать AWS Lambda, запланированное как задание cron, но я не могу контролировать время cron (уменьшение или увеличение в зависимости от размера sqs).

Подход AWS Lambda проще и не требует «какой-либо» инфраструктуры, но он менее гибкий. Кто-нибудь знает другой подход?


person p.magalhaes    schedule 04.09.2016    source источник
comment
Вы можете использовать планировщик Lambda, и внутри вашего обработчика lambda вы можете просто запросить у SQS 20 сообщений (я считаю, что это максимум, который вы можете получить за раз). Если он получил все 20 сообщений, то перед завершением он повторно вызывает себя, используя aws-sdk (AWS.Lambda.invoke(context.functionName)). Если бы было меньше 20 сообщений, то он просто успешно завершился бы после обработки этих сообщений.   -  person idbehold    schedule 04.09.2016


Ответы (1)


Глядя на то, как AWS Lambda обрабатывает планирование cron под капотом (см. https://docs.aws.amazon.com/lambda/latest/dg/with-scheduled-events.html и http://docs.aws.amazon.com/AmazonCloudWatch/last/events/RunLambdaSchedule.html), вы сможете найти событие Cloudwatch, которое запускает вашу лямбду и изменяет ее изнутри самой лямбды. Однако документации по программным API для Lambda и Cloudwatch Events довольно мало, поэтому вам придется во многом разобраться самостоятельно.

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

person Logan Pickup    schedule 04.09.2016