Получение экспоненциального отката в AWS SNS с AWS Lambda

В настоящее время AWS SNS обеспечивает функциональность для повторных испытаний (линейная, геометрическая и экспоненциальная отсрочка) с конечными точками HTTP / HTTPS в случае ответа 5XX, возвращенного конечной точкой.

Из-за этого меняется архитектура моего приложения, и мне настоятельно необходимо вставить шлюз API между моим SNS и Lambda, чтобы в случае сбоя я мог вернуть статус 5XX из шлюза API и использовать функцию повторной проверки SNS.

Но о механизме повторной попытки с AWS lambda ничего не говорится. Могу ли я как-нибудь использовать возможности повторного использования SNS для подписок, не основанных на HTTP?

Спасибо


person Avneesh    schedule 24.04.2017    source источник


Ответы (1)


После пары часов отладки и просмотра документации AWS кажется, что в настоящее время нет способа получить экспоненциальный откат от AWS SNS для чего-либо еще, кроме источников HTTP / HTTPS.

Вы можете проверить это.

Как указано в документации:

Когда пользователь вызывает API публикации SNS по теме, на которую подписана ваша функция Lambda, Amazon SNS вызывает Lambda для асинхронного вызова вашей функции. Затем Lambda вернет статус доставки. Если при вызове Lambda произошла ошибка, Amazon SNS попытается повторно вызвать функцию Lambda до трех раз. Если после трех попыток Amazon SNS по-прежнему не может успешно вызвать функцию Lambda, Amazon SNS отправит в CloudWatch сообщение о сбое состояния доставки.

Поскольку существует асинхронный вызов Lambda SNS, не будет заботиться о статусе выхода лямбда. Следовательно, с точки зрения SNS, успешный вызов лямбда-выражения является достаточно успешным и не приведет к возникновению события сбоя, следовательно, не будет настраиваемого отката.

На данный момент кажется, что добавление конечной точки HTTP - единственный вариант.

person Avneesh    schedule 24.04.2017