如何在无服务器框架中创建多个阶段

How to create multiple stages in serverless framwork

我正在尝试在无服务器中创建多个阶段但没有成功。

这是我的 serverless.yml:

service: some-cache-updater
provider:
  name: aws
  runtime: nodejs8.10
  stage: dev

functions:
  scheduledUpdater:
    handler: handler.scheduledUpdater
    timeout: 120

我想添加的是具有不同超时的 prod 阶段。

我可以在同一个 yml 中做吗?

任何示例或参考都会有所帮助...谢谢。

使用 Serverless' $self 参考插值,其中可以包含进一步的插值。

必要时定义自定义变量。如果变量不存在,您也可以使用默认值。

示例:

service: some-cache-updater

custom:
  functimeout:
    prod: 120
    uat: 60

provider:
    name: aws
    runtime: nodejs8.10
    stage: ${opt:stage, 'dev'}

functions: 
    scheduledUpdater:
    handler: handler.scheduledUpdater
    # Lookup stage key from custom.functimeout. If it doesn't exist
    # default to 10
    timeout: ${self:custom.functimeout.${self:provider.stage}, '10'}

然后,当您部署时,您可以传递 --stage prod--stage uat 参数。在这个例子中,没有设置舞台将默认为 dev

serverless.yml:

...
provider:
  stage: ${opt:stage, 'dev'}
...

命令行:

sls deploy --stage prod

${opt:stage, 'dev'} 采用从命令行 --stage 选项传递的值。在这种情况下 prod。如果没有传递选项 dev 作为默认值。

更多信息在这里: https://serverless.com/framework/docs/providers/aws/guide/variables/#recursively-reference-properties