在无服务器框架服务模式中部署的意外双 Lambda
Unexpected Dual Lambdas deployed in Serverless Framework Services pattern
我正在尝试 serverless Services 模式,目的是为一对或三个 API 调用提供一个入口点,这些调用都与相同的整体服务相关。在我看来,我遵循了建议的模式,实际上代码工作正常,但我看到部署了 two lambda 函数而不是我期望的单一功能。
有没有想过我哪里出错了?
- 将向所需功能发送请求的预期处理程序称为
router
- 路由器导出两个支持的函数(
search
和read
)
search
和 read
在辅助函数中实现。 FWIW 有多个 helpers 具有 search
和 read
的不同实现,驱动了查询参数
一切正常,但如前所述,部署了两个 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 隐含地说明了这一点。
如果您想将 search
和 read
API 合并到同一个函数中,则需要在内部执行路由。您可以使用几个流行的框架来做到这一点,包括 Express、http-api,或者您可以构建自己的框架。
然后您只需将所有请求代理给它:
functions:
# REST API
api:
handler: index.api
events:
- http:
path: /{proxy+}
method: ANY
我正在尝试 serverless Services 模式,目的是为一对或三个 API 调用提供一个入口点,这些调用都与相同的整体服务相关。在我看来,我遵循了建议的模式,实际上代码工作正常,但我看到部署了 two lambda 函数而不是我期望的单一功能。
有没有想过我哪里出错了?
- 将向所需功能发送请求的预期处理程序称为
router
- 路由器导出两个支持的函数(
search
和read
) search
和read
在辅助函数中实现。 FWIW 有多个 helpers 具有search
和read
的不同实现,驱动了查询参数
一切正常,但如前所述,部署了两个 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 隐含地说明了这一点。
如果您想将 search
和 read
API 合并到同一个函数中,则需要在内部执行路由。您可以使用几个流行的框架来做到这一点,包括 Express、http-api,或者您可以构建自己的框架。
然后您只需将所有请求代理给它:
functions:
# REST API
api:
handler: index.api
events:
- http:
path: /{proxy+}
method: ANY