如何根据存储在 DynamoDB 中的日期发送 AWS SNS 移动 SMS 消息

How to send AWS SNS mobile SMS messages based on date stored in DynamoDB

我的应用程序中有一个特定的用例,我必须为此构建一个预约系统。它将约会详细信息保存到 DynamoDB table 中,其中包含有关约会日期和用户手机号码的信息。系统应在约会日期前一天向用户发送提醒短信警报。数据库 table 中还有一个状态属性,当约会日期到达时,它应该更改为 'TODAY'。

我应该如何构建这个系统,才能成功实施这些用例。自动化此过程的架构方法应该是什么?

一种可能的方法是让 Lambda 在定时器 using CloudWatch cron event trigger that scans or queries the DynamoDB table for values that have a date applicable for an SMS alert, and then sends the alerts accordingly using SNS publish to SMS 上运行(注意 SDK 的链接是针对 javascript,但其他语言也支持这些功能,例如嗯)

您可以采用以下方法解决用例

  1. 数据库架构
| pk        |    sk      |     notifyOn    |  notificationStatus | 
| user1     | uuid1234   |     12-5-3019   |  Pending            | some other metadata
| user1     | uuid2345   |     12-5-2018   |  done               | some other metadata
| user2     | uuid2645   |     12-5-2028   |  Pending               | some other metadata
...

There is a GSI created with notifyOn as primary Key and sk as secondary Key

对于通知部分,您可以设置触发 lambda 函数的 cloudwatch 警报。在 lambda 函数中,您可以列出今天应通知的所有用户,并向所有用户发送通知。

根据您的用例和规模,您可以进行进一步的优化,例如

  1. 不是让一个 lambda 函数发送所有通知,而是将 sk 放在另一个 lambda 函数接收并发送通知的一些 sq 中。这将解决

    等问题

    一个。限制 dyanmodb 上的写入 table.

    b。限制您可能用于发送通知的其他资源。

    c。由于 lambda 执行时间上限为 15 分钟,您可能 运行 在发送过多通知时遇到问题。