我仍然试图解决AWS Lambda的局限性,特别是现在AWS API Gateway为Lambda提供了很多用于提供REST请求的选项。
我正在考虑在Angular中构建一个Web应用程序,Lambda作为后端。
对于简单的CRUD东西,它似乎很简单,但身份验证呢?我是否可以在Lambda中使用Passport之类的内容来进行用户身份验证?
答案 0 :(得分:12)
是的,您几乎可以做任何事情,只需将您的会话存储在AWS托管数据库(RDS,Dynamo等)上。但要注意完全你正在购买lambda。它有很多权衡取舍。
价格:EC2服务器每月固定价格,但lambda每次通话费用。哪个更便宜取决于您的使用模式。当没有人使用你的产品时,Lambda会更便宜,随着使用量的增加,EC2很可能更便宜。
比例: EC2可以扩展(在很多方面),但它更“手动”和“矮胖”(你只能运行1台服务器或2台,而不是1.5台)。 Lambda具有细粒度的缩放。你不用担心它,但你对它的控制也很少。
效果:Lambda是一定的速度,你几乎无法控制。在某些情况下,它可能会有很大的延迟,因为它们会启动新容器来处理流量。 EC2为您提供了更多性能调整选项。 (盒子大小,盒上缓存,使用最新的node.js,从盒子中删除不需要的服务,能够运行strace等)你可以支付过剩的容量以确保低延迟。
代码:您在Lambda与EC2中的编码方式略有不同。 Lambda强迫您遵守一些最佳实践惯例。但EC2允许您违反性能或仅仅是开发速度。 Lambda是一个“黑匣子”,当您需要进行故障排除时,您可以减少控制和可见性。
设置:Lambda更易于设置,并且总体上需要的知识较少。 EC2要求您成为系统管理员,并了解VPC,EBS,VPN,AMI等首字母缩写词。
答案 1 :(得分:3)
在此发布,因为这是我在Lamdba上搜索运行NodeJS Passport身份验证时找到的第一个线程。
由于您可以运行Express apps on Lamda,因此您可以直接在Lambda上运行Passport。但是,Passport实际上是专门用于Express的中间件,如果你首先为Lamda设计,你可能不希望Express的膨胀(因为API网关基本上都是这样)。
正如@Jason所说,你可以使用自定义授权器。这似乎很简单,但是谁想要构建所有可能的auth方法?这是Passport的优点之一,人们已经为你做了这件事。
如果您使用Servlerless Framework,则有人建立了"Serverless-authentication"项目。这包括许多标准身份验证提供程序的模块:Facebook,Google,Microsoft。还有a boilerplate for building out more auth providers。
我花了很多时间研究这一切,所以希望能帮助其他人。
答案 2 :(得分:1)
但身份验证呢?
最模块化的方法是使用API网关Custom Authorizers(自2月和16年以来的新版本)提供实施身份验证和授权的AWS Lambda函数。
我写了一个通用Custom Authorizer that works with Auth0第三方单点登录服务。
另请参阅此问题:How to - AWS Rest API Authentication
我是否可以在Lambda中使用Passport之类的东西来进行用户身份验证?
不容易。 Passport依赖于您必须创建和配置的回调URL。