【问题标题】:How to create multiple stages in serverless framwork如何在无服务器框架中创建多个阶段
【发布时间】:2018-11-26 11:13:00
【问题描述】:

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

这是我的serverless.yml

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

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

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

我可以在同一个 yml 中执行吗?

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

【问题讨论】:

    标签: serverless-framework


    【解决方案1】:

    使用 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

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-20
        • 1970-01-01
        • 2018-04-02
        • 1970-01-01
        • 2021-09-16
        • 1970-01-01
        相关资源
        最近更新 更多