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

时间:2018-06-17 09:30:44

标签: serverless-framework

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

这是我的serverless.yml

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

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

我希望添加的是 prod 阶段,其中包含不同的超时。

我可以在同一个yml中完成吗?

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

3 个答案:

答案 0 :(得分:2)

本文解释了在无服务器中实现阶段的正确方法 - https://serverless-stack.com/chapters/stages-in-serverless-framework.html

基本上,它为您的API网关创建了2个路由,每个阶段一个。 祝你好运!

答案 1 :(得分:0)

使用无服务器的$self参考插值,其中可以包括进一步的插值。

定义一个自定义变量,并在必要时进行查找。如果变量不存在,也可以使用默认值。

示例:

service: some-cache-updater

custom:
  functimeout:
    prod: 120
    uat: 60

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

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'}

答案 2 :(得分:0)

serverless.yml:

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

命令行:

sls deploy --stage prod

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

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