有没有办法找出谁在阅读我的SQS消息?

8

我有一个队列,当我发送一条消息时,就会读取该队列中的消息。我没有配置死信队列,因此如果发送的消息处理出现异常,则消息应始终存在。

我的代码是一个SpringBootApplication,通过JMS Listener监听该队列,当发送错误的消息时,会产生异常。

更改队列名称后,同一条消息会一直保留在队列中,直到我手动删除它。但是在之前的队列中,它会被删除,这让我感到非常奇怪,因为据我所知,我没有在任何地方运行我的服务。

我需要找出是谁正在从我的SQS中读取和删除消息(IP地址、AWS凭证或其他什么)。有办法吗?我听说过CloudTrail,并试图弄清楚它。

1个回答

0

您提到了CloudTrail,这确实是正确的服务,可以用来识别IP和身份。

话虽如此,我强烈建议您也检查一下您的队列权限。您可以在AWS控制台中查看SQS队列,并单击访问策略选项卡来执行此操作。在此示例中,用户jbezos有接收和删除消息的权限。关于这些权限值的详细信息,请参阅权限参考

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::${AWS::AccountId}:jbezos"
      },
      "Action": [ "sqs:DeleteMessage", "sqs:ReceiveMessage"]
      "Resource": "arn:aws:sqs:${AWS::Region}:${AWS::AccountId}:my-test-queue"
    }
  ]
}

在编程方面,另一个有价值的信息来源将是您的IAM (身份和访问管理)服务。在这里,您可以查看用户和角色的最新活动。

通过掌握IAM用户或角色的活动情况,以及哪些用户具有删除消息所需的权限,您可能能够识别出问题的原因。

定期进行这种练习是确保访问权限处于适当水平的好方法。很多人会惊讶地发现,某个项目中的角色或账户仍然处于活动状态。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接