Лямбда не помещает сообщение в dlq
Я просто пытаюсь проверить свой DLQ на Lambda, и я не понимаю, почему сообщения не помещаются на него. Мой код просто делает 1 вещь throw new Exception("Test");
,
Первая ошибка была понятна, я пытался сделать это синхронно, используя кнопку Test
, После этого я настраиваю Kinesis
и начал отправлять на него сообщение, но ничего не изменилось. На странице мониторинга на CloudWatch metrics
Я видел, что было несколько ошибок в Errors, Availability
но не было ошибок в DeadLetterErrors
,
Что касается DLQ, который был создан, то это просто простая стандартная очередь без изменений в конфигурации.
Заранее спасибо за помощь
0 ответов
Вызов лямбды асинхронно, как показано ниже, с помощью AWS SDK.
$ aws lambda invoke --function-name my-function --invocation-type Event --payload '{ "key": "value" }' response.json
{
"StatusCode": 202
}
Документы - https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html
- Использование потоков Kinesis для запуска лямбда означает, что вы используете синхронный вызов. Однако DLQ доступен только для асинхронных вызовов.
- Хорошей новостью является то, что в ноябре 2019 года AWS опубликовала новые механизмы обработки ошибок для источников событий Kinesis и DynamoDB.
С помощью этой функции вы можете настроить место назначения в случае сбоя. Этим местом назначения может быть тема SNS, очередь SQS, другая лямбда-функция или шина событий EventBridge.
Чтобы добавить это через интерфейс консоли,
- Перейти к лямбда-функции
- Нажми на
Add Destination
кнопка - Выберите вызов потока
- Выбрать при отказе
- Выберите очередь SQS в качестве места назначения и укажите ее на SQS, который вы хотите использовать как DLQ.
Чтобы добавить его с помощью облачной информации, следуйте этой документации.
Я приведу базовый пример триггера, который вам нужно присоединить к вашей лямбда-функции:
LambdaTrigger:
Type: AWS::Lambda::EventSourceMapping
Properties:
FunctionName: !GetAtt Lambda.Arn
EventSourceArn: !GetAtt Kinesis.Arn
DestinationConfig:
OnFailure:
Destination: !GetAtt DLQ.Arn