来自浏览器的 AWS SNS 发布
AWS SNS pubs from the browser
我想从客户端调用一个 lambda 函数。我打算使用 API 网关,但我想到 SNS 提供的排队功能可能会很方便。
经过研究,似乎通过 Javsacript SDK 发布到 SNS 的唯一方法是通过 google/facebook 或 AWS Cognito 进行身份验证。我希望用户(更具体地说,事件)能够推送 w/o 授权,所以这不是一个选项。
最后一个选项是对 AWS 密钥进行硬编码。这在文档中是非常明确的,但在查看之后,我似乎可以为特定密钥创建安全规定并将其限制为仅发布到一个主题。
换句话说,它表面上模仿了 REST API,不是吗?
我能想到的唯一缺点是 SNS 的恶意垃圾邮件。我知道 AWS API 允许速率限制,但在 SNS 上找不到类似的东西。
那么,2 个相关问题:
有没有办法防止对 SNS 主题的恶意垃圾邮件?
使用 SNS 而不是 AWS API 来调用 lambda 是否还有其他缺点?
您想从 SNS 主题中获得什么队列?我认为您可能将 SNS 与 SQS 混淆了。
我认为在这种情况下使用 SNS->Lambda
与 API->Lambda
没有任何优势。然而,我确实看到了在这种情况下使用 SNS 的一些缺点,因为它增加了不必要的复杂性,并带来了不必要的安全风险。
在这里使用 SNS 确实没有任何优势,而使用 API 网关可以获得一些优势,例如速率限制和 API 密钥支持。更不用说 API 网关端点 比 SNS 主题更容易从浏览器访问 。这是 API 网关的预期用途,为什么要尝试使用 SNS 和硬编码 AWS 密钥组合一些方法?
我想从客户端调用一个 lambda 函数。我打算使用 API 网关,但我想到 SNS 提供的排队功能可能会很方便。
经过研究,似乎通过 Javsacript SDK 发布到 SNS 的唯一方法是通过 google/facebook 或 AWS Cognito 进行身份验证。我希望用户(更具体地说,事件)能够推送 w/o 授权,所以这不是一个选项。
最后一个选项是对 AWS 密钥进行硬编码。这在文档中是非常明确的,但在查看之后,我似乎可以为特定密钥创建安全规定并将其限制为仅发布到一个主题。
换句话说,它表面上模仿了 REST API,不是吗?
我能想到的唯一缺点是 SNS 的恶意垃圾邮件。我知道 AWS API 允许速率限制,但在 SNS 上找不到类似的东西。
那么,2 个相关问题:
有没有办法防止对 SNS 主题的恶意垃圾邮件?
使用 SNS 而不是 AWS API 来调用 lambda 是否还有其他缺点?
您想从 SNS 主题中获得什么队列?我认为您可能将 SNS 与 SQS 混淆了。
我认为在这种情况下使用 SNS->Lambda
与 API->Lambda
没有任何优势。然而,我确实看到了在这种情况下使用 SNS 的一些缺点,因为它增加了不必要的复杂性,并带来了不必要的安全风险。
在这里使用 SNS 确实没有任何优势,而使用 API 网关可以获得一些优势,例如速率限制和 API 密钥支持。更不用说 API 网关端点 比 SNS 主题更容易从浏览器访问 。这是 API 网关的预期用途,为什么要尝试使用 SNS 和硬编码 AWS 密钥组合一些方法?