如何解决在两个不同的 lambda 表达式中使用两个不同的嵌套“路径”时,无服务器“冲突异常”
问题
我有两个不同的 NodeJs lambda。两者都包含自己的 serverless.yml 文件。 lambda 将构成同一服务的一部分,因此它们共享相同的基本 URL。我已经使用 serverless.yml 文件中的 restApiId 和 restApiRootResourceId 键来实现这一点。
我遇到的问题是,当我尝试部署两个 lambda 时,我部署的第二个 lambda 返回无服务器错误:
[0]
[0] An error occurred: ApiGatewayResourceApi - Another resource with the same parent already has this name: api (Service: AmazonApiGateway; Status Code: 409; Error Code: ConflictException; Request ID: 93167f58-5890-4f45-bf02-e036b2c04727; Proxy: null).
[0]
[0] Get Support --------------------------------------------
[0] Docs: docs.serverless.com
[0] Bugs: github.com/serverless/serverless/issues
[0] Issues: forum.serverless.com
我想要如下设置:
Lambda1: https://some.base.url.from.aws/api/v1/staff/getall - 获取 拉姆达2: https://some.base.url.from.aws/api/v1/staff/insert - 发布
我的每个 lambda 的 serverless.yml 文件如下:
# serverless.yml
service: api-lambda-insert-staff
provider:
name: aws
runtime: nodejs14.x
stage: dev
region: eu-west-1
apiGateway:
restApiId: xxxxxxxxx
restApiRootResourceId: xxxxxxxx
functions:
app:
handler: index.handler
events:
- http:
path: api/v1/staff/insert
method: POST
# serverless.yml
service: api-lambda-getall-staff
provider:
name: aws
runtime: nodejs14.x
stage: dev
region: eu-west-1
apiGateway:
restApiId: xxxxxxx
restApiRootResourceId: xxxxxxxxx
functions:
app:
handler: index.handler
events:
- http:
path: api/v1/staff/getall
method: GET
我的尝试
我查看了无服务器文档,发现了一些与我设置类似的示例,所以不太确定出了什么问题。
我已经更改了每个 Lambda 上的函数名称“app”,使它们独一无二,但同样的问题。
现在有点松散,非常感谢任何帮助。
谢谢。
解决方法
原来我需要在 serverless.yml 中使用以下内容:
restApiResources:
"/api": xxxx
"/api/v1": xxxx
"/api/v1/staff": xxxx
您可以在 AWS 控制台的 API Gateway 中找到 xxxx。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。