代码之家  ›  专栏  ›  技术社区  ›  Ben Beri

Nestjs在lambda函数上运行,而不创建实际的服务器来与awsapi网关结合?

  •  0
  • Ben Beri  · 技术社区  · 4 年前

    NestJS . 我得把它们转换成 lambda function 每个服务都有自己的lambda函数。这样做的目的是让我的服务完全变成无服务器。

    我正在使用 API Gateway

    现在,从零开始创建一个MVC模式来接收URL路径并解析所需的控制器和函数(包括URL参数等),这是express和nestjs已经完成的工作。

    在lambda上运行MVC无服务器进程还有其他解决方案吗?

    0 回复  |  直到 4 年前
        1
  •  1
  •   Community CDub    4 年前

    在对网络进行了研究并看到了这些伟大的答案之后,我想把这些信息收集起来,然后把一些更详细的东西,从这些文章中我误解了的东西,以及我发现的那些东西。

    如何使用Lambda函数AWS provider创建一个无服务器的NestJS应用程序

    让我们看看这篇存储库文章: https://github.com/rdlabo/serverless-nestjs

    多亏了他,他基本上打包了一个现成的NestJS项目,配置了 Serverless framework

    我没有足够的经验来谈论serverless框架,但是我可以解释它在我们的案例中是如何工作的。

    首先,有一个 serverless.yml 正如github存储库文章中所解释的,这里基本上描述了lambda函数的名称、要在包中排除的内容以及触发http事件。

    functions:
      index:
        handler: dist/index.handler
        
        events:
        - http:
            cors: true
            path: '/'
            method: any
        - http:
            cors: true
            path: '{proxy+}'
            method: any
    

    我在阅读的时候问自己一个问题,那么这个事件部分是做什么的?

    API Gateway API网关是AWS提供的一种服务,它允许您将请求映射到AWS的其他服务中,例如lambda函数。

    当您运行命令时 sls deploy 使用输入凭据后 sls config credentials

    展开后,您将收到一个激活lambda的链接。 我使用的示例基本上使用了一个有人创建的express无服务器解决方案,基本上是一个代理代码,它知道如何接收API网关请求对象,并将其转换为express并激活它,而无需运行服务器。

    或者,serverless确实优化了模块,因此上传的包比您预期的要小得多。如果有人知道了,+1!

        2
  •  0
  •   Richard Rublev    4 年前

    你用过吗 Blueprint 具有 microservice ? microservice-http-endpoint .

    看看[microservicehttpendpoint]示例。 1

        3
  •  0
  •   vijaykrishnavanshi    4 年前

    此博客展示了如何为express执行此操作: https://serverless.com/blog/serverless-express-rest-api/