首页 > 解决方案 > 从列入白名单的 IP 发布到 SQS

问题描述

应用程序是否可以通过将其机器 IP 地址列入白名单将消息发布到 SQS 队列?

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

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

标签: amazon-web-servicesamazon-iamamazon-sqs

解决方案


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

但另一种方法是拥有一个 AWS API 网关,该网关调用一个发送 SQS 消息的 Lambda。API 网关将被限制为一小部分(或一个)IP 集。 此链接详细介绍,但关键是在您的 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 Gateway 调用将调用您的 Lambda。在内部,您仍在使用 IAM 角色,但在 AWS 外部却没有。


推荐阅读