Обработка ошибок для AWS SQS с лямбда-триггерами и зарезервированной емкостью - PullRequest
0 голосов
/ 21 января 2019

Я использую подход, описанный здесь , чтобы переместить сообщения, которые были ошибочно обработаны лямбда-функцией, вызванной SQS, в DeadLetterQueue.

В моем случае ReservedCapacity лямбдыДля функции задано небольшое значение - я хочу ограничить количество одновременных выполнений.Что происходит, даже если журналы / метрики Cloudwatch не отображают ошибки выполнения лямбды, некоторые сообщения не обрабатываются и отправляются в DLQ.

Дросселируется лямбда-функция, что ожидается.Кажется, что когда функция задушена, сообщение удаляется из SQS, а затем возвращается, что приводит к завершению сообщения в DLQ, даже если в коде выполнения лямбда-ошибок нет ошибок.

Сейчас яувеличение maxReceiveCount с 1 до 3 в качестве обходного пути.Есть ли лучший способ отправлять только ошибки выполнения лямбды (не включая регулирование) в DLQ?


  SearchJobsQueue:
    Type: 'AWS::SQS::Queue'
    Properties:
      MessageRetentionPeriod: 1209600
      VisibilityTimeout: 60
      RedrivePolicy:
        deadLetterTargetArn:    
            "Fn::GetAtt":       
              - SearchJobsDLQ
              - Arn
        maxReceiveCount: 3

EDIT : Моя цель - чтобы DLQ получал только лямбды с ошибками, которые былине рассматривается явно в лямбда-код.Обходной путь имеет следующие проблемы: в случае постоянных ошибок сообщение будет обработано по крайней мере 3 раза до окончания в DLQ, когда достаточно 1 раза;в зависимости от времени, необходимого для обработки всех сообщений очереди, и от интервала проверки очереди лямбда-триггером, возможно, что сообщение, не обработанное из-за дросселирования 3 раза, заканчивается в DLQ.

1 Ответ

0 голосов
/ 20 февраля 2019

Эта презентация AWS подробно описывает эту тему.Сообщения, которые не используются из-за регулирования, возвращаются в очередь и обрабатываются так же, как и сообщения, которые не используются из-за других ошибок во время выполнения лямбды.Однако для этих случаев существуют рекомендации, такие как определение времени ожидания видимости очереди в 5-6 раз больше времени ожидания лямбды.

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