【问题标题】:Is there a way of finding out who is reading my SQS messages?有没有办法找出谁在阅读我的 SQS 消息?
【发布时间】:2019-11-03 02:59:22
【问题描述】:

我有一个队列,只要我在其中发送一些消息,就会从中读取消息。我没有配置死信队列,所以如果处理发送的消息产生异常,消息应该总是在那里。

我的代码是一个 SpringBootApplication,它监听该队列并在发送一些错误消息时产生异常。监听是通过 JMS Listener 完成的。

更改队列名称后,相同的消息会保留在那里,直到我手动删除它。但在之前的队列中,它被删除了,据我所知,这真的很奇怪,因为我没有在任何地方运行我的服务。

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

【问题讨论】:

    标签: java amazon-web-services amazon-sqs amazon-cloudtrail


    【解决方案1】:

    您提到CloudTrail,确实是这里识别IP和身份的正确服务。

    也就是说,我强烈建议您也检查您的队列权限。您可以在 AWS 控制台中通过查看 SQS 队列并单击 Access Policy 选项卡来执行此操作。在此示例中,用户jbezos 具有接收和删除消息的权限。有关这些权限值的详细信息,请参见 permissions reference

    {
      "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 (Identity and Access Management) 服务。在这里,您可以查看用户和角色的最后一个活动。

    有了关于 IAM 用户或角色的信息,这些用户或角色一直处于活动状态,并且具有删除消息所需的权限,您或许能够确定原因。

    定期进行此类练习是确保访问权限保持在适当级别的好方法。许多人惊讶地发现角色或帐户在剩余项目中仍然处于活动状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多