从 Public 互联网发布 AWS SQS 消息

Publishing AWS SQS message from Public Internet

我在各个 environments/devices 上的代理 运行 将定期从 public 网络中删除消息。 这些消息将由我的 AWS Lambda 处理。 系统是异步的。

我正在考虑使用 SQS 来提供 Lambda。 就是这样,SQS 端点将对互联网开放。 如何验证发布在 AWS SQS 上的消息。

大多数 devices/agents 推送消息将在客户 VPN 上。所以,建立一个private-vpn-link是一个可能的解决方案。

不应创建 SQS 队列public,这样任何没有 AWS 凭据的人都可以使用它。这不是一个好习惯。

更好的选择是在 SQS 队列前面使用 API 网关:

通过这种方式,您可以使 API 网关端点 public,使用 API 密钥控制其吞吐量、限制、节流和访问, 和更多。

API 网关将与您的 SQS 队列集成,这将允许您触发您的 lambda 函数

通过使用 API keys or lambda authorizes ,您将能够 控制 devices/agents 对 API 网关的访问 ,随后,到 SQS。

如果您希望尽量减少通过 public 互联网 space 的消息,您有几个选项可供您使用。

首先,正如您提到的,您有可以通过 VPN 连接的设备,如果可能的话,您可以使用自定义域名为 SQS 创建 VPC endpoint

在您的应用程序中,通过从其中一个 ENI 引用自定义域名或私有 IP 地址,可能可以通过 VPC 私下进行实际交互。

您可以通过在前面添加一个代理层来增强您的安全检查,以验证输入以对内容执行任何检查。您的应用程序将传递到此验证层,如果通过则添加到队列中。

值得指出的一件事是,即使使用 VPN,流量也会穿越互联网,但在传输过程中是加密的。最好的安全措施是将 HTTPS 与私有凭证(最好作为 IAM 角色)结合使用,以减少有人向您的队列添加不正确数据的可能性。

A​​mazon SQS 端点位于 Internet 上而不是 VPC 中。使用 VPN 连接没有任何好处,除非您希望创建一个策略,仅允许将来自 VPN 连接的消息发送到队列。

对于 AWS IoT,您的 use-case 可能是 better-suited 而不是 Amazon SQS:

它旨在处理来自各种设备的大量数据,使用 in-built 消息处理规则。