AWS Lambda - 基于 Lambda 别名的不同死信队列

AWS Lambda - different dead letter queue based on Lambda alias

我有两个 SQS 队列,一个用于 test 阶段,一个用于 prod 阶段,还有一个带有 [=14= 的 Lambda 函数]test和prod别名,每个别名由相应队列的SQS事件触发。

我想知道是否有办法为 Lambda 的每个别名(我使用 SAM 模板定义 Lambda 函数)指定一个 DLQ,或者我想了解处理此类问题的最佳实践要求。

添加您的 DLQ 非常简单 - 而且您拥有的测试产品别名设置根本不会使事情复杂化。

RedrivePolicy 添加到您的两个队列定义中。这是代码的一半:

  # template.yaml

  # new: define a new queue to be the prod DLQ
  MyProdDLQ:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: this-queue-captures-errors-sent-from-the-prod-queue

  MyProdQueue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: this-queue-feeds-the-prod-alias-lambda
      VisibilityTimeout: 60  
    # new: assign the DLQ
    RedrivePolicy:
        deadLetterTargetArn: !GetAtt MyProdDLQ.Arn
        maxReceiveCount: 5

注意:您可能想在 lambda 函数本身上定义 DLQ。比较迷惑的是,lambda函数上的DLQ是针对asynchronous (event-driven) invocations, not SQS sources. The docs warn about this的,但是很容易漏掉