[英]Serverless Framework how to create an AWS SQS DeadLetter queue?
我正在尝试使用无服务器框架创建 AWS SQS 死信队列
这个想法是有一个SQS来触发一个Lambda function,
并有另一个 SQS 作为 DeadLetterQueue,即。 在 Lambda 失败或超时的情况下接收消息
我做了以下创建一个测试项目 -
mkdir dlq
cd dlq/
serverless create --template aws-nodejs
以下是我的无服务器。yaml -
service: dlq
provider:
name: aws
runtime: nodejs12.x
region: ap-southeast-1
role: arn:aws:iam::xxxx:role/dlqLambdaRole
plugins:
- serverless-plugin-lambda-dead-letter
functions:
dlq:
handler: handler.hello
events:
- sqs:
arn:
Fn::GetAtt:
- MainQueue
- Arn
deadLetter:
targetArn:
GetResourceArn: DeadLetterQueue
resources:
Resources:
MainQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: main
DeadLetterQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: dlq
我还尝试了以下 -
service: dlq
provider:
name: aws
runtime: nodejs12.x
region: ap-southeast-1
role: arn:aws:iam::xxxx:role/dlqLambdaRole
plugins:
- serverless-plugin-lambda-dead-letter
functions:
dlq:
handler: handler.hello
events:
- sqs:
arn:
Fn::GetAtt:
- MainQueue
- Arn
deadLetter:
sqs: dlq
resources:
Resources:
MainQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: main
但在这两种情况下,框架只是创建了一个普通的 SQS
我正在关注这份文件 -
https://www.serverless.com/plugins/serverless-plugin-lambda-dead-letter
迟到总比不到好。 希望这可以帮助您或寻找此问题的人。
当您配置 SQS 以触发 Lambda 时,应该在 SQS 上配置 DLQ(因为它不会是异步调用)。 注意链接源中的“注释”部分
因此,您的 serverless.yaml 需要在主队列中声明 ReddrivePolicy 以引用 DQL。 (以下)
service: dlq
provider:
name: aws
runtime: nodejs12.x
region: ap-southeast-1
role: arn:aws:iam::xxxx:role/dlqLambdaRole
functions:
dlq:
handler: handler.hello
events:
- sqs:
arn:
Fn::GetAtt:
- MainQueue
- Arn
deadLetter:
targetArn:
GetResourceArn: DeadLetterQueue
resources:
Resources:
MainQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: main
RedrivePolicy:
deadLetterTargetArn:
Fn::GetAtt:
- "DeadLetterQueue"
- "Arn"
maxReceiveCount: 5
DeadLetterQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: dlq
根据 AWS 文档,maxReceiveCount 设置为 5。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.