【问题标题】:AWS Lambda for user-defined notifications in multi-tenant web application?AWS Lambda 用于多租户 Web 应用程序中的用户定义通知?
【发布时间】:2024-04-27 23:20:02
【问题描述】:

AWS Lambda 是下一个用例的好解决方案吗:

多租户 Web 应用程序托管在 AWS (EC2) 上。用户可以通过应用程序定义动态/自定义数据集,并将数据存储在 MongoDB 中。需要一个允许用户定义规则的通知系统:在某些事件(实体创建/更新;属性更新)上将执行脚本功能。在脚本中,检查给定实体的条件并在满足条件时发送电子邮件通知。

一种可能的解决方案是将脚本存储为 Lambda 函数,因为它看起来相对容易实现,但我不确定这是不是一个好的解决方案。可能会有数千个 Lambda 函数。最大功能数量是否有限制?我害怕将用户定义的函数与我自己的函数分开,并将所有不同的租户函数混合在一个地方(因为 Lambda 没有定义函数的树结构)。也可能意外更改或删除用户定义的函数……

或者使用一些嵌入式脚本?

AWS 专家的任何意见,请...

【问题讨论】:

    标签: c# mongodb multi-tenant saas aws-lambda


    【解决方案1】:

    如果不了解有关数据架构和会触发更新的规则类型的更多详细信息,很难推荐任何东西,但是您可以将规则存储在数据库中,而不是在用户脚本中硬编码它们吗?然后,您可以只使用一个脚本来获取更新的数据并检查是否有任何规则会导致更新数据发出通知。

    【讨论】:

    • 这也是在 db.xml 中以某种预定义格式存储规则的选项。但我正在寻找一些更灵活的选项,以提供用户可以为某些事件定义脚本函数(例如更新指定属性)。当事件发生时,所有相关函数都会被调用。触发由服务器端应用程序 (.NET) 控制。这些脚本确实是硬编码的,但我认为实际上可以由最终用户轻松更新(我将在 Web 应用程序和服务器端代码中有一个编辑器来控制 lambda 函数的创建/更新。您对此有何看法?
    【解决方案2】:

    恕我直言,最好避免陷入必须接受来自系统外部(无法控制输入)的代码才能在系统内运行的情况。您将接到太多来自客户的电话,他们希望您对他们写得不好的脚本进行开发测试。

    我拥有的产品允许用户描述他们想要导入的自定义数据集的架构。该产品与已知数据源集成,并将它们转换为内部模式。此外,该产品允许客户从自定义来源导入数据,并在此类自定义来源的属性上描述条件。

    您是否考虑过在您的产品中对条件表达式(您当前希望通过用户定义的脚本进行评估)进行建模,并实施一个后端评估引擎来评估相关触发器上的条件?根据您的结果,可以触发发布操作(针对您的案例发送通知电子邮件)。这应该足以满足大多数情况。

    即使您在某些罕见的场景中绝对必须支持某些自定义脚本,Lambda 也是一个低效的选择。为您必须执行的每个脚本创建执行环境是一种矫枉过正的做法。如果脚本数量失控,您将无法控制您的环境。托管脚本执行环境将是可行的方法。

    【讨论】:

      最近更新 更多