AWS Lamba постоянно получает пустые сообщения о событиях SQS - PullRequest
0 голосов
/ 13 февраля 2020

Я относительный n00b на AWS, поэтому извиняюсь, если это глупый вопрос.

У меня есть AWS Лямбда, написанная на Java. У меня также есть очередь SQS, которая получает сообщения о событиях AWS S3. Затем я создал лямбда-триггер для очереди SQS, так что моя лямбда получает события S3 в виде сообщений SQS и обрабатывает их соответствующим образом.

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

Код Java выглядит следующим образом:

public class SQSEventHandler implements RequestHandler<SQSEvent, Void> {
    @Override
    public Void handleRequest(SQSEvent sqsEvent, Context context) {
        if (sqsEvent != null) {
            LOGGER.debug("Received SQS event: {}", sqsEvent.toString());
            ... do stuff...

Если я посмотрю в журналах CloudWatch (я регистрирую с помощью SLF4J), я вижу, что лямбда запускается с различными сообщениями SQS каждые 2 минуты, даже в периоды, когда нет сообщений о событиях S3 для process:

02:54:16 START RequestId: d5454080-8ea3-4c44-93e9-caa5bd903599 Version: $LATEST
02:54:16 [2020-02-13 02:54:16.220] - [d5454080-8ea3-4c44-93e9-caa5bd903599] DEBUG <package>.SQSEventHandler - Received SQS event: {}
02:54:16 END RequestId: d5454080-8ea3-4c44-93e9-caa5bd903599
02:54:16 REPORT RequestId: d5454080-8ea3-4c44-93e9-caa5bd903599 Duration: 1.05 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 161 MB
02:56:16 START RequestId: 9d5acbba-b96c-47e9-81c2-2d448e4ca6e9 Version: $LATEST
02:56:16 [2020-02-13 02:56:16.386] - [9d5acbba-b96c-47e9-81c2-2d448e4ca6e9] DEBUG <package>.SQSEventHandler - Received SQS event: {}
02:56:16 END RequestId: 9d5acbba-b96c-47e9-81c2-2d448e4ca6e9
02:56:16 REPORT RequestId: 9d5acbba-b96c-47e9-81c2-2d448e4ca6e9 Duration: 1.23 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 161 MB
02:58:16 START RequestId: 54bc4fa4-bcaf-4834-9185-09c9c7e2d757 Version: $LATEST
02:58:16 [2020-02-13 02:58:16.451] - [54bc4fa4-bcaf-4834-9185-09c9c7e2d757] DEBUG <package>.SQSEventHandler - Received SQS event: {}
02:58:16 END RequestId: 54bc4fa4-bcaf-4834-9185-09c9c7e2d757
02:58:16 REPORT RequestId: 54bc4fa4-bcaf-4834-9185-09c9c7e2d757 Duration: 1.01 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 161 MB

Других очередей SQS с триггерами для этой лямбды нет.

Как видите, объект события SQS не равен нулю, но ничего не генерирует в Вызов toString ().

Я не могу понять, в чем проблема - любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

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

0 голосов
/ 13 февраля 2020

Что сделала ваша лямбда-функция с сообщениями SQS?

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

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