【问题标题】:MoonMail Lambda architecture with Serverless无服务器的 MoonMail Lambda 架构
【发布时间】:2017-06-11 04:19:08
【问题描述】:

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

我有以下问题:

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

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

【问题讨论】:

    标签: node.js aws-lambda serverless-framework moonmail


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

    【讨论】:

    • @julian 关于限流问题,当它超过发送率时,我们只是将电子邮件保留在队列中,它会自动重试,直到队列为空(查看更多here )。如果我们达到每日限制,我们将停止发送过程,因为配额要到第二天才会恢复,但我们会在发送活动之前进行一些检查以避免达到它。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2018-05-07
        • 2022-12-09
        • 2018-09-17
        • 2021-04-23
        • 2017-11-12
        • 2021-03-10
        • 2017-11-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多