AWS SNS主题数限制

时间:2018-04-03 09:35:27

标签: amazon-web-services amazon-sns

会有很多用户。每个用户可能有多个区域。我想为每个区域发送3个类别的电子邮件提醒。每个类别都有多个电子邮件端点。

那么为每个类别创建一个可行的主题?

例如

- 如果我的每个区域都有3个类别,我将不得不为每个类别创建一个主题。因此每个区域将有三个tpoics,每个主题将有一些订阅者。

我想问一下,这是正确的方式还是有更好的选择?

1 个答案:

答案 0 :(得分:2)

关于这个场景,你提到过,我猜Filter policy for SNS最适合。您也可以按照此AWS教程' Filter Messages Published to Topics'为了这。

过滤政策的想法很简单,
将消息发布到主题时,还会在消息中包含一些属性(元数据),例如area = 2,category = 3
现在,此消息将仅发送给在订阅策略(属性)中提及此键值对的订阅者,或者发送给根本没有任何策略的所有订阅者。

定义订阅策略(属性),同时在客户端的代码中进行订阅请求。

要发布的示例消息(注意消息中的MessageAttributes):

{
  "Type" : "Notification",
  "MessageId" : "e3c4e17a-819b-5d95-a0e8-b306c25afda0",
  "TopicArn" : "arn:aws:sns:us-east-1:111122223333:MySnsTopic",
  "Message" : message body with transaction details . . .
  "Timestamp" : "2017-11-07T23:28:01.631Z",
  "SignatureVersion" : "1",
  "Signature" : signature . . .
  "UnsubscribeURL" : unsubscribe URL . . .
  "MessageAttributes" : {
    "customer_interests" : {"Type":"String.Array","Value":"[\"soccer\", \"rugby\", \"hockey\"]"},
    "store" : {"Type":"String","Value":"example_corp"},
    "event" : {"Type":"String","Value":"order_placed"},
    "price_usd" : {"Type":"Number","Value":210.75}
  }
}

示例订阅者政策:

{
    "store": ["example_corp"],
    "event": [{"anything-but":"order_cancelled"}],
    "customer_interests": ["rugby", "football", "baseball"],
    "price_usd": [{"numeric":[">=", 100]}]
}

关于限制:
默认情况下,SNS为每个主题提供1000万个订阅,每个帐户提供100,000个主题。要申请更高的限额,请联系支持部门。 Link

我希望这个答案能让你在正确的方向上思考/移动