从列入白名单的 IP 发布到 SQS

Publishing to SQS from a whitelisted IP

应用程序是否可以通过其计算机 IP 地址白名单将消息post发送到 SQS 队列?

我查看了 https://aws.amazon.com/premiumsupport/knowledge-center/iam-restrict-calls-ip-addresses/,但这是一个角色,我仍然需要 AWS 用户来执行此操作。

有没有什么方法可以只从 IP 地址发布到 SQS 队列,根本不需要 AWS 用户?

如果您的应用程序在 VPC 中运行,您可以使用 AWS PrivateLink 私下连接到您的 SQS 队列,这样流量就不会遍历互联网,这通常可以解决将 IP 地址列入白名单以用于内部私人流量的需要。 SQS and AWS PrivateLink

没有直接的方法 - 您仍然需要您的 AWS 凭证。

但另一种方法是让 AWS API 网关调用发送 SQS 消息的 Lambda。 API 网关将仅限于一小部分(或一组)IP。 This link 进入细节,但关键是在您的 API 网关调用上有资源策略:

{
  "Version": "2012-10-17",
  "Statement": [{
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "execute-api:/*/*/*"
    },
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "execute-api:/*/*/*",
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": ["1.2.3.4"]
        }
      }
    }
  ]
}

其中 1.2.3.4 是您要允许进入的 IP 地址。此 API 网关调用随后将调用您的 Lambda。在内部您仍在使用 IAM 角色,但在 AWS 外部则不是。

我发现对于 SQS(不是 SNS),我可以将发件人的 ip 列入白名单。然后我可以做一个 POST 就可以了。