【问题标题】:Publishing AWS SQS message from Public Internet从公共 Internet 发布 AWS SQS 消息
【发布时间】:2020-06-09 17:06:31
【问题描述】:

在各种环境/设备上运行的我的代理将定期从公共网络中删除消息。 这些消息将由我的 AWS Lambda 处理。 系统是异步的。

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

大多数推送消息的设备/代理将在客户 VPN 上。因此,建立私有 vpn-link 是一种可能的解决方案。

【问题讨论】:

标签: amazon-web-services aws-lambda amazon-sqs


【解决方案1】:

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

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

通过这种方式,您可以公开您的 API 网关端点,控制其吞吐量、限制、节流、使用 API 密钥进行访问等。

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

通过使用API keyslambda authorizes ,您将能够控制您的设备/代理对 API 网关以及随后对 SQS 的访问。

【讨论】:

  • 这解决了我的问题。我发现的附加链接与您共享的链接一致-medium.com/@pranaysankpal/…
  • @Ambar 很高兴听到。谢谢你的链接。
【解决方案2】:

Amazon SQS 终端节点位于 Internet 而不是 VPC 中。使用 VPN 连接没有任何好处,除非您希望创建一个策略,只允许消息通过 VPN 连接发送到队列。

您的用例可能更适合 AWS IoT 而不是 Amazon SQS:

它旨在处理来自各种设备的大量数据,并具有用于处理消息的内置规则。

【讨论】:

  • 我不知道这种物联网服务产品,因为物联网并不是我正在做的事情。我会通过它,如果有帮助,我会更新。
【解决方案3】:

如果您希望最大限度地减少在公共互联网空间中传输的消息,您可以使用一些选项。

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-02
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 2017-05-29
    • 2020-10-07
    相关资源
    最近更新 更多