【发布时间】:2020-08-16 16:23:39
【问题描述】:
关于如何在 SNS 中构建订阅的最佳做法是什么。在我当前的项目中,我们正在处理长时间运行的文件作业,这可能需要几分钟的时间来处理,并且我们有一个可选的通知,客户可以在他们的作业完成时收到。此回调通知可以是不同的集成格式,例如 HTTP Post、消息到 SNS 主题以及未来更多。
最初我计划为每个客户进行订阅,但后来我选择为每个集成进行订阅。那就是我有一个callbackType 类型的消息属性,它可以是HTTP 或SNS。如果callbackType=HTTP 应该有另一个名为httpUrl 的属性,如果是callbackType=SNS 应该有一个topicArn。然后在我的队列中,我有 2 个不同的 Lambda 订阅,每个订阅一个 callbackType,这将执行实际的回调。
一方面这很好,因为我不需要为每个客户创建新订阅,并且重试逻辑被重用。但另一方面,节流不是针对每个客户,而是针对每个集成,这意味着客户不会像他们想的那样孤立。此外,我们至少有一个客户希望我们将此消息转发到他们的 SNS 主题,因此据我了解,他们需要授予对我们 Lambda 函数的role 的访问权限,而另一个客户可能必须再次为相同的角色做同样的事情理想情况下。
这是正确的方法吗?还是我应该将一个订阅映射给一位客户,或者一个订阅映射到多个客户可以吗?我不需要 SNS 的订阅取消订阅功能我对这种方法可能缺少的任何权衡更感兴趣。
【问题讨论】:
标签: amazon-web-services amazon-sns