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

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

我有一个队列,只要我在其中发送一些消息,就会从该队列中读取消息。我没有配置死信队列,因此如果发送消息的处理产生异常,消息应该始终存在。

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

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

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

最佳答案

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

也就是说,我强烈建议您也检查您的队列权限。您可以在 AWS 控制台中通过查看 SQS 队列并单击访问策略选项卡来执行此操作。在此示例中,用户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"
    }
  ]
}

这里的另一个有值(value)的信息来源将在您的 IAM (Identity and Access Management) 中。服务。在这里,您可以查看用户和角色的最后 Activity 。

掌握有关 IAM 用户或角色已处于 Activity 状态且具有删除消息所需权限的信息,您也许能够确定原因。

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

关于java - 有没有办法找出谁在阅读我的 SQS 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56683442/

相关文章:

java.io.StreamCorruptedException : invalid stream header: AC3F0005

java - 享元模式中描述的内在状态和外在状态有什么区别?

amazon-web-services - 无服务器 : [AWS] Unable to create role resource with policy

amazon-web-services - SQS 收到消息后自动删除 Lambda

amazon-web-services - AWS S3 文件夹放置事件通知

java - 用于银行帐户/钱包余额更新用例的 Kafka 或 Java Locks,选择哪一个以获得更好的性能?

java - 在java中创建json对象之前如何检查空数组字符串?

amazon-web-services - 如何将AWS资源转换为cloudformation堆栈或模板?

postgresql - Amazon Aurora PostgreSQL 选择进入 OUTFILE S3

amazon-web-services - AWS SQS : Which is the order of message in a FIFO queue after visibility-timeout expires?