I use serverless to configure a Lambda function that receives events via AWS SQS. Now I want to add a dead letter queue. That's what I have so far:
service: myservice
plugins:
- serverless-plugin-lambda-dead-letter
provider:
name: aws
runtime: go1.x
region: eu-central-1
iamRoleStatements:
- Effect: "Allow"
Action:
- "sqs:*"
Resource:
- "*"
package:
exclude:
- ./**
include:
- ./bin/**
functions:
main:
handler: bin/send-mail
deadLetter:
sqs:
queueName: send-mail-dlx
messageRetentionPeriod: 200000
events:
- sqs: arn:aws:sqs:eu-central-1:123456789:send-mail
Both SQS queues were created successfully, but the dead letter queue send-mail-dlx
isn't assigned as dead letter queue to send-mail
. How do I assign it properly in my serverless config?
Found it: https://github.com/serverless/serverless/issues/4647#issuecomment-474306379
resources:
Resources:
MyQueue:
Type: "AWS::SQS::Queue"
Properties:
QueueName: "MyQueue"
VisibilityTimeout: 30
MessageRetentionPeriod: 60
RedrivePolicy:
deadLetterTargetArn:
"Fn::GetAtt":
- ReceiverDeadLetterQueue
- Arn
maxReceiveCount: 1
ReceiverDeadLetterQueue:
Type: "AWS::SQS::Queue"
Properties:
QueueName: "receiverDLQ"
MessageRetentionPeriod: 1209600 # 14 days in seconds