如何在serverless.yml中定义要用于部署的现有API网关项目?

时间:2019-11-10 15:58:26

标签: serverless-framework angular-universal aws-serverless

我正在使用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 +}“

1 个答案:

答案 0 :(得分:0)

好问题!

为了共享现有的API网关,您需要在restApiId文件中声明关联的serverless.yml,以及restApiRootResourceId

您可以在docs, here中阅读更多内容。 您也可以遵循此excellent blog post