100,000 个主题限制的 AWS SNS 解决方法

Posted

技术标签:

【中文标题】100,000 个主题限制的 AWS SNS 解决方法【英文标题】:AWS SNS workaround for 100,000 topics limit 【发布时间】:2016-07-07 20:17:34 【问题描述】:

我正在开发一种将 AWS SNS 与 APNS 和 GCM 结合使用的推送通知架构。我关注的模型是

每个用户(不是设备)都有一个与之对应的 SNS 主题 每个用户可以拥有多个设备 为每个设备创建一个平台应用端点 为平台应用程序端点订阅属于设备用户的主题

这样,当我们必须向用户的所有设备发送通知时,我们需要使用用户的topicArn 调用publish 方法,并且它的所有设备都应该收到消息。

但是,默认情况下,AWS 限制为 100,000 个主题。如果我们预计会有更多的用户,比如 100 万或乐观地说 1000 万,这种方法有什么解决方法吗?

我应该要求 AWS 提前提高限制吗?他们会轻易将上限提高到 1 亿这样的数字吗?是否有任何成本影响,因为它们中的大多数在最初几个月都没有使用?

【问题讨论】:

【参考方案1】:

披露:我曾经在 Amazon SNS 工作

您提出的架构是 Amazon SNS 中的一种常见模式并且是合理的。

您应该要求topic limit increase。拥有更高的主题限制没有成本影响,即使您创建了主题并且不使用它们。但是,对于每个 CreateTopic 呼叫,您将 pay $0.50/million requests,每月前 100 万个请求是免费的。

当您提交支持请求时,请记录您的用例。它可以帮助团队加快您的限制增加请求。

【讨论】:

您能告诉我 AWS SNS 推送通知的消息字符限制吗? 每天的sns发送限制是多少?【参考方案2】:

我们采用了与 OP 类似的模型,但有一个例外 - 随着用户数量的增加,死帐户的数量也在增加。面对现实,用户留存是一个挑战。因此,您可能想提出一个主题回收策略。提示:不要将主题永久绑定到用户,而是允许 ARN 过期,类似于 DHCP 租约。您的应用程序可能会定期询问您的 Web 服务它需要订阅什么 ARN 并期望被重新分配。如果您尽早将其构建到客户端协议中,您将不需要那么多 ARN。毕竟,10 万 活跃用户 与 10 万 注册用户 完全不同 :)

【讨论】:

【参考方案3】:

使用 Amazon SNS,没有最低费用,您只需按使用量付费。用户每 100 万次 Amazon SNS 请求支付 0.50 美元,通过 HTTP 的每 100,000 次通知发送支付 0.06 美元,通过 SMS 的每 100 次通知发送支付 0.75 美元,通过电子邮件每 100,000 次通知发送支付 2.00 美元。

Amazon SNS 还包括免费套餐,用户可以免费开始使用 Amazon SNS。每个月,Amazon SNS 客户对前 100 万个 Amazon SNS 请求免费,前 100,000 个 HTTP 通知免费,前 100 个 SMS 通知免费,前 1,000 个电子邮件通知免费。

因此,如果您预期的话,我会建议您提前增加限制。您不会因增加限制而被收取费用。他们肯定会增加到 1 亿。

【讨论】:

以上是关于100,000 个主题限制的 AWS SNS 解决方法的主要内容,如果未能解决你的问题,请参考以下文章

AWS SNS 主题策略 Cloudformation

AWS Eventbridge 通知无法使用 SNS 主题

使用适用于 Ruby 的 AWS 开发工具包发布到 SNS 主题时指定区域

AWS Inspector 的 AWS CloudFormation 模板能否添加 SNS 主题

AMAZON AWS 我如何为端点订阅 SNS 主题?

来自账户 A 的 AWS Cloudwatch 警报无法发布到账户 B 中的 SNS 主题