【问题标题】:AWS Lambda - different dead letter queue based on Lambda aliasAWS Lambda - 基于 Lambda 别名的不同死信队列
【发布时间】:2021-12-19 14:20:18
【问题描述】:

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

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

【问题讨论】:

    标签: aws-lambda amazon-sqs


    【解决方案1】:

    添加 DLQ 很简单 - 并且您拥有的 test-prod 别名设置根本不会使事情复杂化。

    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,而不是 SQS 源。 docs warn about this,不过很容易错过。

    【讨论】:

      猜你喜欢
      • 2021-02-18
      • 2022-09-29
      • 2020-12-12
      • 2018-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-19
      • 2016-04-13
      相关资源
      最近更新 更多