前言
在 Serverless 应用中,API Gateway 是非常重要的一部分。API Gateway 提供了连接 Serverless 函数的 HTTP/HTTPS 入口,API 管理,请求转发等功能。在使用 Serverless 时,您可能需要频繁地重复编写 API Gateway 的相关配置,这可能会造成大量的重复工作,同时也增加了错误和维护的成本。
为了解决这个问题,Kalarrs 开源了一个 npm 包 @kalarrs/serverless-shared-api-gateway,这个包提供了一个自定义资源类型,它将 API Gateway 的配置集中在一个地方,可供多个函数共享使用。本文将详细介绍该 npm 包的使用方法。
前置条件
在开始本教程之前,你需要已经安装并熟悉使用 Serverless Framework。
该 npm 包支持以下 Serverless Framework 中的 provider:
- AWS
- Aliyun
- Tencent
同时,它也支持以下语言的 Serverless 项目:
- Node.js
- Python
- Go
- PHP
- Java
安装
使用 npm 包管理器安装 @kalarrs/serverless-shared-api-gateway:
$ npm install @kalarrs/serverless-shared-api-gateway
或者使用 yarn:
$ yarn add @kalarrs/serverless-shared-api-gateway
使用
使用 @kalarrs/serverless-shared-api-gateway 的步骤如下:
- 在您的 Serverless 项目目录下创建一个
resource
目录,用于存放shared_apigateway.yml
和serverless.yml
。
. ├── resource │ ├── serverless.yml │ └── shared_apigateway.yml └── serverless.yml
- 在
resource/shared_apigateway.yml
文件中,编写 API Gateway 的配置。
下面是一个例子:
# shared_apigateway.yml Resources: SharedAPIGateway: Type: AWS::Serverless::Api Properties: Name: my-shared-apigateway
如上所示,这将创建一个名为 my-shared-apigateway
的 API Gateway,作为一个 CloudFormation 资源,可供多个函数共享使用。更多关于 AWS::Serverless::Api 的属性可以参考 AWS 文档。
- 在
resource/serverless.yml
文件中,以 Serverless Framework 的语法描述您的 Lambda 函数和其他 Serverless 资源,并将SharedAPIGateway
引用到 Gateway 中。(如果您的函数没有使用 API Gateway,则无需这一步)
-- -------------------- ---- ------- - -------------- -------- ---------- --------- ----- --- -------- ---------- ---------- ------------ -------- ------------- ---------- - ------------- - ----------------------------------------- -------- ---------- ------ ---- ---------------- ------- ----- -------------------------- --------------- ------ ----------- - ---------------- - -------------- ------- ----- -------------------------------
注意,我们将 SharedAPIGateway
输出为了 RestApiId
和 RootResourceId
,这是为了方便其他函数的引用,可以在其他 Serverless 资源中使用该资源的引用。
- 在您的 Serverless 项目目录下,创建一些需要使用 API Gateway 的函数,并在它们的 YAML 文件中添加 SharedAPIGateway 的引用。
-- -------------------- ---- ------- - -------------- -------- ---------- --------- ----- --- -------- ---------- ---------- ------------- -------- ------------- ------- - ----- ----- ------ ------- ---- - -- ---------------- --- ---------- ------------------ -------------------------- - -- ---------------- --- ----------- ------------------ ------------------------------- ------------- -------- ------------- ------- - ----- ----- ------ ------- --- - -- ---------------- --- ---------- ------------------ -------------------------- - -- ---------------- --- ----------- ------------------ ------------------------------- - ------------- ---------- - ----------------------------------------- -------- ---------- ------ ---- ---------------- ------- ----- -------------------------- --------------- ------ ----------- - ---------------- - -------------- ------- ----- -------------------------------
在函数的 YAML 文件中,我们使用了 restApiId
和 resourceId
字段引用了共享的 API Gateway 资源。
至此,您已经完成了对 @kalarrs/serverless-shared-api-gateway 的基本使用。您可以在多个函数中使用相同的 API Gateway 配置,从而节省了重复的工作和减少了维护的成本。
结语
本教程介绍了如何使用 @kalarrs/serverless-shared-api-gateway 包,它通过集中 API Gateway 的配置资源,不仅减少了重复工作,而且也减少了维护的成本。相信它能够使您的 Serverless 项目开发更加高效和简洁。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066bc6967216659e244441