AWS Lambda w /用于Angular后端的API网关?

时间:2015-07-23 22:35:18

标签: amazon-web-services aws-lambda

我仍然试图解决AWS Lambda的局限性,特别是现在AWS API Gateway为Lambda提供了很多用于提供REST请求的选项。

我正在考虑在Angular中构建一个Web应用程序,Lambda作为后端。

对于简单的CRUD东西,它似乎很简单,但身份验证呢?我是否可以在Lambda中使用Passport之类的内容来进行用户身份验证?

3 个答案:

答案 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"项目。这包括许多标准身份验证提供程序的模块:FacebookGoogleMicrosoft。还有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。