Как подписать несколько лямбда-функций на одну и ту же очередь SQS
Чего я хочу добиться, так это масштабировать количество потребителей определенной очереди, используя лямбда-функции, а не "самодостаточных" подписчиков.
Для данного event-queue
Я хочу, чтобы несколько потребителей обрабатывали уникальные сообщения из этой же очереди, точно так же, как я бы просто делал это с кластером процессов, но я бы хотел использовать облачные функции лямбда-выражения. До сих пор я только что нашел, как подписаться с помощью одной функции, без возможности масштабирования.
1 ответ
Я нашел эту очень полезную статью из https://cloudonaut.io/ (Андреас Виттиг), которая иллюстрирует один подход к нескольким потребителям AWS Lambdas:
Интеграция SQS и Lambda: безсерверная архитектура для асинхронных рабочих нагрузок
Для масштабирования решения Andreas вы можете использовать AWS CloudWatch Alarms из своей очереди AWS SQS и тигра AWS CloudFormation (и / или AWS Serverless Application Repository), чтобы при необходимости увеличить количество пользователей AWS Lambda.
Другой подход заключается в использовании Amazon MQ.
Если вы используете Amazon Simple Notification Service (SNS) или AWS Kinesis, одно и то же сообщение вызовет разные лямбды, и вы, вероятно, получите дублированные действия между лямбдами.
[Обновить]
Теперь можно использовать Amazon Simple Queue Service в качестве триггера для AWS Lambda:
Более подробная информация здесь: https://aws.amazon.com/blogs/aws/aws-lambda-adds-amazon-simple-queue-service-to-supported-event-sources/