Ani*_*aje 2 amazon-sqs amazon-web-services serverless-framework
我正在尝试使用无服务器框架创建一个 AWS SQS 死信队列
这个想法是有一个 SQS 来触发 Lambda 函数,
并有另一个 SQS 作为 DeadLetterQueue,即。在 Lambda 失败或超时的情况下接收消息
我做了以下操作来创建一个测试项目 -
mkdir dlq
cd dlq/
serverless create --template aws-nodejs
Run Code Online (Sandbox Code Playgroud)
以下是我的 serverless.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
Run Code Online (Sandbox Code Playgroud)
我也尝试了以下 -
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
Run Code Online (Sandbox Code Playgroud)
但是在这两种情况下,框架只是创建了一个普通的 SQS
我正在关注这个文件 -
https://www.serverless.com/plugins/serverless-plugin-lambda-dead-letter
小智 5
迟到总比不到好。希望这可以帮助您或搜索此问题的人。
当您配置 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
Run Code Online (Sandbox Code Playgroud)
根据 AWS 文档,maxReceiveCount 设置为 5。
May*_*Raj -5
给您一些背景知识,死信队列就是一个普通的 SQS 队列。AWS Lambda 的配置通知它在处理消息时出现任何错误时将消息推送到此队列。
您可以通过管理控制台参考“异步调用”下的“死信队列服务”来验证这一点
| 归档时间: |
|
| 查看次数: |
2033 次 |
| 最近记录: |