AWS Lambda与API Gateway用于Angular后端?

5

我仍在努力理解AWS Lambda的限制,特别是现在AWS API Gateway通过Lambda为REST请求提供了许多选项。

我正在考虑使用Angular构建Web应用程序,并将Lambda作为后端服务。

对于简单的CRUD操作,似乎很简单,但是身份验证怎么办?我能否在Lambda中使用像Passport这样的东西进行用户身份验证?


你有没有尝试过这个并让它工作?我可以使用Postman命中我的API网关端点并运行Lambda函数,但是Angular就是做不到。 - dudemonkey
3个回答

12

是的,您可以做任何事情,只需将会话存储在 AWS 托管的数据库上(RDS、Dynamo 等)。但请注意,您使用 Lambda 时需要了解其具体的权衡取舍。

  • 价格:EC2 服务器每月需要固定费用,但 Lambda 每次调用都有成本。哪个更便宜取决于您的使用模式。当没有人使用您的产品时,Lambda 更便宜;使用量增加时,EC2 很可能 更便宜。

  • 规模:EC2 可以扩展(以多种方式),但它更“手动”和“粗糙”(您只能运行 1 个或 2 个服务器,而不能运行 1.5 个)。Lambda 具有细粒度的扩展性。您不必担心这个问题,但您也对此控制较少。

  • 性能:Lambda 具有一定的速度,并且您几乎没有控制权。在某些情况下,它可能具有巨大的延迟,因为它们会启动新容器来处理流量。EC2 为性能调整提供了更多选项。(盒子大小、盒子缓存、使用最新版本的 node.js、从盒子中删除不需要的服务、能够运行 strace 等)您可以支付超额容量以确保低延迟。

  • 代码:在 Lambda vs EC2 中,您编写代码的方式略有不同。Lambda 强制你遵守一些惯例,这主要是最佳实践。但是,在性能或开发速度方面,EC2 允许您违反这些惯例。当您需要解决问题时,Lambda 是一个“黑盒子”,您对其控制和可见性较少。

  • 设置:Lambda 更易于设置,并且总体上需要更少的知识。EC2 要求您成为系统管理员,并了解像 VPC、EBS、VPN、AMI 等首字母缩写。


3

我在这里发布这个帖子,因为这是我在搜索在Lambda上运行NodeJS Passport身份验证时找到的第一个主题。

由于您可以在Lambda上运行Express应用程序,因此您确实可以直接在Lambda上运行Passport。但是,Passport实际上是专门为Express设计的中间件,如果您首先为Lamda设计,则可能不希望使用Express(因为API网关基本上完成了所有这些工作)。

正如@Jason所提到的,您可以利用自定义授权者。这似乎非常简单明了,但谁想构建所有可能的身份验证方法呢?这就是Passport的优点之一,人们已经为您完成了这项工作。

如果您正在使用Servlerless Framework,有人已经构建了"Serverless-authentication"项目。这包括许多标准授权提供者的模块:FacebookGoogleMicrosoft。还有一个用于构建更多授权提供者的样板文件
我花费了很多时间进行研究,希望这能帮助其他人。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接