You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于AWS实现死信队列遇阻:Lambda报错未触发SQS队列

AWS Lambda死信队列(DLQ)配置异常:报错事件无法推送至SQS队列

我正在基于AWS实现Lambda失败事件的死信队列(DLQ)方案,已完成以下配置:

  • 创建了一个名为dlq的SQS队列
  • 两个Lambda函数:
    • 第一个函数执行时直接抛出错误
    • 第二个函数监听上述SQS队列,收到消息时触发并将事件日志输出到CloudWatch

在AWS管理控制台中可确认:

  • 抛错的Lambda函数已配置死信队列
  • 监听SQS的Lambda函数配置正常——手动向SQS发送消息时,CloudWatch日志显示它能按预期触发

但目前遇到的问题是:抛错的Lambda函数报错时,无法将事件发送到SQS队列,也就无法触发监听的Lambda函数。我已查阅官方文档、观看教程视频,尝试过onError配置,均未解决该问题。


相关代码

handler.js

module.exports.function = async (event) => {
    throw new Error('Throwing error 🚨')
}

module.exports.dispatcher = async (event) => {
  try {
    console.log(`Dispached Event:${JSON.stringify(event)}`)
  } catch (error) {
    console.log(error)
    return error
  }
}

serverless.yml

service: dlq-example

frameworkVersion: '3'

provider:
  name: aws
  runtime: nodejs14.x
  iam:
    role:
      statements:
        # Allow functions to list all buckets
        - Effect: Allow
          Action: '*'
          Resource: '*'

plugins:
  - serverless-plugin-lambda-dead-letter

functions:
  hello:
    handler: handler.function
    description: Throws error.
    deadLetter:
      targetArn:
        GetResourceArn: DeadLetterQueue

  dispatcher:
    handler: handler.dispatcher
    description: Dispatcher function. Configured to be triggered by events sent to SQS and handle them.
    events:
      - sqs:
          arn:
            Fn::GetAtt:
              - DeadLetterQueue
              - Arn
resources:
  Resources:
    DeadLetterQueue:
      Type: AWS::SQS::Queue
      Properties:
        QueueName: dlq

AWS控制台配置截图说明

  • 配置了DLQ的抛错Lambda函数截图:显示函数的死信队列已关联目标SQS队列
  • 监听SQS的Lambda函数截图:显示函数的触发器配置为目标SQS队列
  • SQS队列及Lambda触发器配置截图:显示SQS队列已绑定监听Lambda作为触发器

内容的提问来源于stack exchange,提问作者Sonny Fishback

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 08:48:21