aws-lambda - 在两个不同的 lambda 中使用两个不同的嵌套“路径”时的无服务器“冲突异常”
问题描述
问题
我有两个不同的 NodeJs lambda。两者都包含自己的 serverless.yml 文件。lambda 将构成同一服务的一部分,因此它们共享相同的基本 URL。我使用了 serverless.yml 文件中的 restApiId 和 restApiRootResourceId 键来实现这一点。
我遇到的问题是,当我尝试部署两个 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 - 获取 Lambda2: https ://some.base.url.from.aws/api/v1/staff/insert - POST
我的每个 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。
推荐阅读
- scala - 在scala中使用套接字编程连接两台计算机
- php - 无法使用 SimpleXML 循环遍历 XML 元素
- jenkins - 当对 github 进行任何提交时,是否可以从本地 jenkins 将 node.js 服务器部署到 minikube?
- php - 窗口滚动时按钮移动到导航栏
- amcharts - AMCharts 4 如何从 javascript 代码中水平滚动?
- c# - UpdatePanel 从 ajax 刷新调用不同的线程
- android - 如何用 OkHTTP 测量下载速度?
- vba - 通过远程触发器向 Jenkins 发送文本文件 - 来自 excel(VBA)
- azure - 我们可以通过 Azure 事件中心处理图像、视频等媒体文件吗?
- node.js - 聚合查询中 $geoNear 的歧义