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

MTZ*_*TZ4 9 serverless-framework

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

这是我的serverless.yml

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

functions:
  scheduledUpdater:
    handler: handler.scheduledUpdater
    timeout: 120
Run Code Online (Sandbox Code Playgroud)

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

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

无论如何,示例或参考资料都会有所帮助......谢谢。

Ala*_*ack 10

使用 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'}
Run Code Online (Sandbox Code Playgroud)

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


oz1*_*z19 7

无服务器.yml:

...
provider:
  stage: ${opt:stage, 'dev'}
...
Run Code Online (Sandbox Code Playgroud)

命令行:

sls deploy --stage prod
Run Code Online (Sandbox Code Playgroud)

${opt:stage, 'dev'}获取从命令行--stage选项传递的值。在这种情况下,产品。如果没有传递任何选项,则将dev作为默认值。

更多信息请参见: https://serverless.com/framework/docs/providers/aws/guide/variables/#recursively-reference-properties