当前位置: 首页 > 知识库问答 >
问题:

AWS SNS主题子:拒绝死信队列(重新驱动策略)权限

孔城
2023-03-14

我有一个SNS主题&订阅(实际上不止1个)设置来使用SQS DLQ。然而,每一个都告诉我,我有一个策略错误。

我的SNS订阅设置了DLQ:

我的队列存在:

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__owner_statement",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::1234:root"
      },
      "Action": "SQS:*",
      "Resource": "arn:aws:sqs:eu-west-2:1234:AggregateMonitoringDeadLetterQueue"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sns.amazonaws.com"
      },
      "Action": "SQS:SendMessage",
      "Resource": "arn:aws:sqs:eu-west-2:1234:AggregateMonitoringDeadLetterQueue",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": [
            "arn:aws:sns:eu-west-2:1234:aggregator-state",
            "arn:aws:sns:eu-west-2:1234:rank-state-publication",
            "arn:aws:sns:eu-west-2:1234:rank-state-categorisation"
          ]
        }
      }
    }
  ]
}

我还尝试在队列上使用一个真正通用的访问策略:

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__owner_statement",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "SQS:*",
      "Resource": "arn:aws:sqs:eu-west-2:1234:AggregateMonitoringDeadLetterQueue"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sns.amazonaws.com"
      },
      "Action": "SQS:*",
      "Resource": "arn:aws:sqs:eu-west-2:1234:AggregateMonitoringDeadLetterQueue",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:sns:eu-west-2:1234:*"
        }
      }
    }
  ]
}

我遵循的是:https://docs.aws.amazon.com/sns/latest/dg/sns-configure-dead-letter-queue.html(步骤5解释了设置策略)

其他参考:https://docs.aws.amazon.com/sns/latest/dg/sns-dead-letter-queue.html

我一定是做错了什么,或者遗漏了什么?我无法摆脱这个错误。

共有1个答案

连晟
2023-03-14

请参阅以下答案,其中指出,尽管存在错误消息,但失败的消息将正确发送到DLQ。

从我的角度来看,我可以确认我在我的DLQ中收到了那些失败的消息,该DLQ的配置与您的配置类似(通过以下相同的文档https://docs.aws.amazon.com/sns/latest/dg/sns-configure-dead-letter-queue.html)。

 类似资料:
  • 我正在使用ActiveMQ Artemis 2.17和Spring Boot 2.5.7。我正在发布关于主题和队列的消息并使用它。所有这些都是通过JMS完成的。所有队列(选播或多播)都是耐用的。我的主题(多播地址)有两个持久队列,以便有两个独立的使用者。在我的主题中,这两个消费者使用持久和共享订阅(JMS 2.0)。所有处理都是事务性的,通过Atomikos事务管理器进行管理(我需要它来提交数据库

  • 我已经将lambda集成设置为具有固定保留并发的SQS,以限制对后端服务的请求。我需要使用DLQ来跟踪和存储错误。 使用SQS的ReDrive策略与lambda函数的DeadLetterConfig在行为上有什么不同? 我对队列中有大量消息但lambda并发性有限时的行为特别感兴趣。

  • 我正在设计一种机制来处理消费者没有收到的消息。

  • 从今天起,我们的Airflow服务无法访问BigQuery中的查询。所有作业都会失败,并显示以下消息: [2021-03-12 10:17:28079]{taskinstance.py:1150}错误-原因:403获取https://bigquery.googleapis.com/bigquery/v2/projects/waipu-app-prod/queries/e62030d7-36eb-4

  • 我正在尝试使用Lambda的一纸空文队列。我已将其配置为将消息发送到SNS队列。我放入了一个不正确的处理程序,以使Lambda调用错误消失。错误消息永远不会到达SNS队列。我相信这是一个权限问题。下面是SNS队列的“我的访问策略”设置 lambda函数附加了一个角色,该角色具有、到以及到 我错过什么了吗?有没有其他原因消息可能不会到达DLQ?

  • 死信队列(Dead Letter Queue)本质上同普通的Queue没有区别,只是它的产生是为了隔离和分析其他Queue(源Queue)未成功处理的消息。 创建死信队列的方法参见createQueue() API,与创建普通队列无异, 死信队列不可调用deadMessage(), deadMessageBatch API,其他操作都与对普通Queue的操作无异。 为了将源Queue的未能成功处理