具有无服务器的MoonMail Lambda架构

我一直在研究这个项目,因为让整个系统成为Lambda函数集合的想法看起来非常有吸引力。 事实上,几年前我写了一些和MoonMail几乎完全相同的软件,而且随着一些规格的变化,这些软件也会有所更新。 我正在评估将我的软件移植到Lambda,或者只是适应使用MoonMail。

我有以下问题:

在使用无服务器的testing中,我注意到当我更改资源名称(如DynamoDb表的名称)并重新部署时,没有任何警告,旧表及其内容被破坏。 我认为一个简单的错误就像configuration文件中的一个额外的字符导致删除数据库上的所有数据是相当危险的。 你如何处理这类问题?

关于通过SES发送电子邮件。 当您达到特定帐户的发送限制时,您如何处理限制? 你做指数退避? 我似乎无法在代码库中find这个。 如果您能在回购的一般区域指出我的位置,我将非常感激。

  1. MoonMail的表名存储在s-templates.json中。 这个文件很less被触及,因此团队还没有经历过这个问题,但是事实上危险依然存在,我会向AWS团队提出如何避免在CF中重命名的问题。
  2. 它会重新发送Cloud Watch调用的限制情况(如果我错了,MM队会纠正我,但是99%确定我不是)。

您可以设置DeletionPolicy: Retain在创buildDynamoDB表时DeletionPolicy: Retain ,以防止它们被Cloud Formation意外删除。

如果您的Lambda是由SNS调用的,那么当超过SES限制时,您可能会失败。 然后,SNS将重新尝试使用补偿。

目前我的做法是在一个独立的过程中创造动力。 所以我的无服务器设置是只读的,没有创build数据库。 因为我不认为我会重新创build我的数据库经常:)