2

Может кто-нибудь объяснить мне преимущество или недостаток использования SNS -> Lambda vs. SNS -> SQS -> Lambda.AWS Pub/Sub Message Pattern

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

ответ

4

Если что-то не изменилось, вопрос о том, имеет ли это смысл развернуть SNS → Lambda или SNS → → SQS Lambda, основана на предпосылке с существенным недостатком.

Как указано в Supported Event Sources в документации лямбда, лямбда-события могут быть получены из S3, DynamoDB, Kinesis, SNS, СЭС, Cognito, CloudFormation, CloudWatch & событий (в том числе запланированных мероприятий), AWS Config, Amazon Echo, и API Gateway.

И, конечно, вы можете ссылаться на них напрямую.

Но SQS не поддерживается источником событий Lambda.

+0

Вы правы, и я приношу свои извинения за пропущенную инструкцию по прямому триггеру, Lambda в случае очереди потребует опроса с расписанием лямбда. Но я думаю, что я ищу, как вы получаете хотя бы раз доставку с SNS на Lambda. – tafaju

+1

@tafaju SNS всегда будет вызывать подписанную функцию лямбда. Если ваша функция лямбда не завершится успешно, она будет повторена до двух раз. Но ваша функция Lambda всегда будет вызываться хотя бы один раз. С SNS to Lambda недостатком является то, что нет понятия очереди с мертвой буквой, поэтому, если ваша функция Lambda три раза истекает для одного и того же сообщения SNS, вы просто отбросили эти данные на пол. Нет способа выздороветь. – idbehold

+0

@idbehold правильный. Один из способов избежать потери данных, если ошибки с тремя шагами предотвращают обработку событий, - это отключение от темы SNS до Lambda и SQS, позволяя сообщениям обычно просто истекать и автоматически удаляться из очереди SQS, если ошибки Lambda не являются , и в этом случае процесс очистки может просматривать сообщения, помеченные в очередь. У меня есть настройка S3> SNS> Lambda, которая делает это. Функция Lambda иногда выдает ошибки, когда S3 является одним из своих «окончательно согласованных» настроений во время больших партий перезаписи существующих объектов, поэтому это мой резервный план. –

2

Amazon SQS - это служба очереди сообщений, используемая распределенными приложениями для обмена сообщениями через модель опроса и может использоваться для развязки отправляющих и принимающих компонентов - без необходимости одновременного доступа к каждому компоненту. Используя совместно с Amazon SNS и Amazon SQS, сообщения могут доставляться в приложения, которые требуют немедленного уведомления о событии, а также сохраняются в очереди ASA Amazon для других приложений, которые будут обрабатываться позднее.

Пока вы не хотите отделять отправку и получение компонентов и просто хотите достичь своего варианта использования в вопросе, он будет работать в обоих случаях: SNS-Lambda и SNS - SQS - Lambda.

+0

Я согласен, что оба достижимы, просто ищет конкретные плюсы и минусы в контексте построения надежной платформы сообщений. Единственный элемент, который я вижу в проблеме, - это надежность, которая отсутствовала бы в контексте SNS -> Lambda, поскольку SQS обеспечивал бы надежную обработку и попытки повторной попытки. – tafaju

+0

И Долговечность, так как она будет обеспечивать, чтобы каждое сообщение доставлялось Лямбде по крайней мере один раз – error2007s

+0

, вы говорите с SQS в миксе правильно? – tafaju

Смежные вопросы