8

我一直在研究这个项目,因为让整个系统成为 Lambda 函数集合的想法似乎非常吸引人。事实上,几年前我写了一些与 MoonMail 几乎相同的软件,并且由于某些规格发生了变化,因此需要进行更新。我正在评估将我的软件移植到 Lambda,或者只是调整它以使用 MoonMail。

我有以下问题:

在我使用 Serverless 的测试中,我注意到当我更改资源名称(如 DynamoDb 表的名称)并重新部署时,没有警告并且旧表及其内容被破坏。我认为像配置文件中的额外字符这样的简单错误导致删除数据库上的所有数据是非常危险的。您如何处理此类问题?

关于通过 SES 发送电子邮件。当您达到特定帐户的发送限制时,您如何处理限制?你做指数退避吗?我似乎无法在代码库中找到它。如果您能指出我在回购中发生这种情况的一般区域,我将不胜感激。

4

3 回答 3

5
  1. MoonMail 的表名存储在 s-templates.json 中。这个文件很少被触及,因此团队还没有遇到这个问题,但确实危险仍然存在,我会向 AWS 团队询问如何通过简单地在 CF 中重命名表来避免删除表。
  2. 它确实会通过Cloud Watch 调用重试发送限制案例(如果我错了,MM 团队会纠正我,但 99% 肯定我没有)。
于 2017-01-26T14:54:54.437 回答
5

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

如果您的 Lambda 由 SNS 调用,那么您可能会在超过 SES 限制时失败。然后,SNS 将使用回退重新尝试交付。

于 2017-01-27T02:36:48.027 回答
3

我目前的方法是在单独的过程中创建 dynamodb。所以我的无服务器设置是只读的,没有创建数据库。因为我不认为我会经常重新创建我的数据库:)

于 2017-02-21T03:00:56.733 回答