在无服务器框架服务模式中部署的意外双 Lambda

Unexpected Dual Lambdas deployed in Serverless Framework Services pattern

我正在尝试 serverless Services 模式,目的是为一对或三个 API 调用提供一个入口点,这些调用都与相同的整体服务相关。在我看来,我遵循了建议的模式,实际上代码工作正常,但我看到部署了 two lambda 函数而不是我期望的单一功能。

有没有想过我哪里出错了?

一切正常,但如前所述,部署了两个 lambda 而不是所需的单个 lambda,每个都有一个路由器,每个都有助手。 API 部分以某种方式将每个函数视为完全独立的,即使它们引用相同的 router 函数作为入口点。

serverless.yml 应该反映文章中的那个,如下所示:

functions:
  search:
    handler: router.search
    events:
      - http:
          path: /stuff/search/{site}
          method: get
          request:
            parameters:
              ...
  read:
    handler: router.read
    events:
      - http:
          path: /stuff/read/{site}
          method: get
          request:
            parameters:
              ...

在部署时我看到类似的东西:

endpoints:
  GET - https://specificURL.execute-api.us-east-1.amazonaws.com/dev/search/{site}
  GET - https://specificURL.execute-api.us-east-1.amazonaws.com/dev/read/{site}
functions:
  search: myproject-dev-search
  read: myproject-dev-read

其中 specificURL 在每种情况下都相同

functions 块中列出的每个项目都是一个单独的 lambda 函数。您引用的示例 post 隐含地说明了这一点。

如果您想将 searchread API 合并到同一个函数中,则需要在内部执行路由。您可以使用几个流行的框架来做到这一点,包括 Express、http-api,或者您可以构建自己的框架。

然后您只需将所有请求代理给它:

functions:
  # REST API
  api:
    handler: index.api
    events:
      - http:
          path: /{proxy+}
          method: ANY