【问题标题】:AWS Lambda w/ API Gateway for Angular back-end?用于 Angular 后端的带有 API 网关的 AWS Lambda?
【发布时间】:2015-10-14 10:59:29
【问题描述】:

我仍在努力解决 AWS Lambda 的局限性,尤其是现在 AWS API Gateway 为使用 Lambda 提供 REST 请求提供了许多选项。

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

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

【问题讨论】:

  • 你有没有试过这个并让它工作?我可以使用 Postman 访问我的 API 网关端点并运行 lambda 函数,但 angular 不会这样做。

标签: amazon-web-services aws-lambda


【解决方案1】:

是的,您几乎可以做任何事情,只需将您的会话存储在 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 等首字母缩略词。

【讨论】:

    【解决方案2】:

    在这里发布,因为这是我在 Lamdba 上搜索运行 NodeJS Passport 身份验证时发现的第一个线程。

    既然你可以运行Express apps on Lamda,你真的可以直接在 Lambda 上运行 Passport。但是,Passport 确实是专门为 Express 设计的中间件,如果您一开始是为 Lamda 设计的,那么您可能不希望 Express 的臃肿(因为 API Gateway 基本上可以做到所有这些)。

    正如@Jason 所提到的,您可以使用自定义授权方。这看起来很简单,但是谁想要构建所有可能的身份验证方法?这是 Passport 的优势之一,人们已经为您做到了。

    如果您使用的是Servlerless Framework,则表明有人构建了"Serverless-authentication" 项目。这包括许多标准身份验证提供程序的模块:FacebookGoogleMicrosoft。还有a boilerplate for building out more auth providers

    我花了很多时间研究所有这些,所以希望它能帮助其他人。

    【讨论】:

      【解决方案3】:

      但是身份验证呢?

      最模块化的方法是使用 API Gateway 的 Custom Authorizers(自 2016 年 2 月以来新增)来提供实现身份验证和授权的 AWS Lambda 函数。

      我写了一个通用的Custom Authorizer that works with Auth0 第三方单点登录服务。

      另请参阅此问题:How to - AWS Rest API Authentication

      我能否在 Lambda 中使用 Passport 之类的东西来进行用户身份验证?

      不容易。 Passport 依赖于您必须创建和配置的回调 URL。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-30
        • 2017-06-11
        • 2020-02-24
        • 2018-11-09
        • 1970-01-01
        • 1970-01-01
        • 2023-01-22
        • 2021-05-28
        相关资源
        最近更新 更多