【问题标题】:Sending custom SNS notifications to only selected endpoints- using lambda仅向选定的端点发送自定义 SNS 通知 - 使用 lambda
【发布时间】:2020-01-17 13:08:31
【问题描述】:

假设我有 100 人订阅了一个名为“remeinde_me_my_appointment”的主题,并且我有 lambda 函数,它为我提供了一个包含 5 个人及其端点的列表,这些人明天应该被提醒他们的约会。

现在我的问题是,lambda 和 SNS 之间的通信应该如何工作?

我想要做的就是向 5 个注册接收通知的人发送 5 条消息,而且我已经神奇地获得了他们所有的端点。

我要让他们再次回到主题吗?!我在这里做什么我很困惑?看起来我已经定义了自己的主题和订阅,但下一步是什么?

【问题讨论】:

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


    【解决方案1】:

    这不是订阅 Amazon SNS 主题的好用例。

    当消息发送到 SNS 主题时,所有收件人都会收到消息。您还可以使用Amazon SNS Message Filtering 根据消息属性限制接收消息的订阅者。

    但是,根据您的用例,这不是发送消息的好方法。通过向每个人发送个人消息以及有关他们约会的自定义信息,您的用例可能会更好地处理,例如:

    Dear Joe, this is a reminder of your appointment with Dr Smith at 10am tomorrow.

    因此,不要向主题发送消息,而是使用带有终端节点 ARN 的 Amazon SNS publish() 命令:

    sns.publish(TargetArn=user_endpoint_arn, Message=msg)
    

    要使用发布操作将消息发送到移动端点,例如 Kindle 设备或手机上的应用程序,您必须为 TargetArn 参数指定 EndpointArn。使用 CreatePlatformEndpoint 操作进行调用时会返回 EndpointArn。

    这对于向移动应用程序发送消息很有用。

    如果您只是发送短信,则可以直接发布到手机号码:

    sns.publish(PhoneNumber='+16025551234', Message=msg)
    

    【讨论】:

    • 谢谢约翰,这正是我需要知道的。
    • @John - 假设如果用户设备令牌发生变化,那么端点 arn 也会发生变化,那么订阅 arn 也会发生变化,对吗?所以我认为直接向用户发送消息是好的,而不是将所有用户作为订阅添加到主题?如果我错了,请纠正我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多