我正在使用serverless
框架来部署角度通用应用程序(aws lambda + API网关)。每当我从另一台PC运行部署或仅定义一个新阶段时,lessserver都会在aws中自动创建一个新的API网关项目。
# serverless.yml
# generated by @ng-toolkit/serverless
service: web-app
plugins:
- serverless-apigw-binary
provider:
name: aws
runtime: nodejs8.10
memorySize: 512
timeout: 20
apiName: ssr-web-app
package:
exclude:
- src/**
- node_modules/**
- firebug-lite/**
- e2e/**
- coverage/**
- '!node_modules/aws-serverless-express/**'
- '!node_modules/binary-case/**'
- '!node_modules/type-is/**'
- '!node_modules/media-typer/**'
- '!node_modules/mime-types/**'
- '!node_modules/mime-db/**'
custom:
apigwBinary:
types:
- '*/*'
functions:
api:
handler: lambda.universal
events:
- http: ANY {proxy+}
- http: ANY /
我希望每次运行部署serverless
时都始终使用相同的特定gateway API
项目,并在相同的已定义项目下创建新阶段。
如何在我的gateway API
中定义对现有serverless.yml
项目(id?)的引用?
----编辑----
我尝试将以下内容添加到provider
部分:
apiGateway:
restApiId: xxxxxxxxxx
restApiRootResourceId: yyyyyyyyyy
并收到错误消息“发生错误:ApiGatewayResourceProxyVar-具有相同父级的另一个资源已经具有此名称:{proxy +}“
答案 0 :(得分:0)
好问题!
为了共享现有的API网关,您需要在restApiId
文件中声明关联的serverless.yml
,以及restApiRootResourceId
。
您可以在docs, here中阅读更多内容。 您也可以遵循此excellent blog post