【发布时间】:2018-02-23 01:27:55
【问题描述】:
我与我的经理就 AWS Lambda 的使用进行了永无休止的讨论。我想从你们中的一个人那里得到一些帮助。
我有点犹豫是否将无服务器架构用于生产级项目。首先,测试我在本地设置中构建的内容有点耗时。即使我们可以通过单元测试来测试代码,我们也无法消除模拟请求和响应对象失败的可能性。当我在开发过程中测试我的 Lambda 编写的 API 时,我无法在本地设置中调用 lambda 的事实让我非常无聊。其次,据我所知,AWS Lambda 的可用性和可靠性没有任何承诺的 SLA。这让我有点犹豫采用 Lambda 来构建 RESTful API。
所以现在我要做的是仅在捕获从 AWS 触发的事件时使用 Lambda。例如,在用户将个人资料图片上传到 S3 存储桶后执行某项操作,或在用户通过 Cognito 注册后执行某项操作。
但是,我的经理期望将我的 Node.js API 与 AWS Lambda 混合用于一个项目。从我的角度来看,这完全没有意义。一旦我们在 EC2 实例上设置了 Node API,我认为考虑设置自动扩展或如何利用当前 EC2 上运行的所有资源会更有效率。但是我的经理坚持要我同时设置 Node API 和 Lambda API。例如,服务 A 和 B 将由 Node API 提供服务,而服务 C、D 和 E 将由 AWS Lambdas 提供服务。
我之前尝试过,但它给我带来了很多困惑。我觉得在构建 API 时最好选择 Node API 或 AWS Lambda API,而不是将它们混合在一起。
我不想说我的经理完全是假的,我是对的。在这种情况下,我只想有一个明确的答案。对于这种情况,我非常感谢任何评论和答案。
【问题讨论】:
-
“在开发过程中测试我的 Lambda 编写的 API 时,我无法在本地设置中调用 lambda,这让我非常无聊。” 为什么不能你呢?有
lambda-local或真正的 lambda,可以使用 aws-cli 和/或控制台轻松测试。我使用了一个小脚本,它使用 cli 进行压缩/上传/调用,以便在开发期间对实际 Lambda 进行测试。不知道你在说什么,在这里。 -
完全同意。甚至在我使用
lambda-local之前,这种情况下的 lambda 函数最终仍然是一个 Javascript 函数,可以通过示例事件调用(您可以从示例 lambda 函数中提取)和模拟回调(如果您愿意)。有很多方法可以在本地“调用”一个 lambda,即使没有任何额外的工具。 -
@Michael-sqlbot 我不知道这个工具。谢谢你告诉我!
-
@purdoo 我很清楚 lambda 函数可以在任何环境中进行测试。通常我通过单元测试过程在本地设置中测试我的 lambda。我没有说这是不可能的。
标签: javascript node.js aws-lambda serverless-framework serverless-architecture