【问题标题】:Always require stage parameter for Serverless framework无服务器框架始终需要阶段参数
【发布时间】:2018-10-10 20:33:15
【问题描述】:

如果没有给出阶段,有没有办法让 Serverless 中止执行?

看起来它默认为“dev”,这在不存在“默认”环境的多环境设置中不是首选。

我能得到的最接近的方法是从本地文件中读取“阶段”配置变量。不幸的是,如果(现有)本地文件中缺少阶段变量,无服务器仍然默认为“开发”。不过,它确实会为缺少的变量发出警告。

provider:
  name: aws
  runtime: nodejs8.10
  region: eu-west-1
  stage: ${file(serverless-local.yml):stage}

【问题讨论】:

  • 我建议为您的用例编写一个 bash 脚本。例如build.sh 文件,然后调用sls 并传递其参数。当你有这样的设置时,你可以在执行前轻松地做一些检查。
  • 创建一个包装器/前端脚本是可行的(我以前做过),但对于简单的设置,我更喜欢使用标准的无服务器执行方式,因为它已经有一个非常简单的 CLI界面。

标签: aws-lambda serverless-framework


【解决方案1】:

这有点猜测,因为我是无服务器框架的新手,但您可以设置在命令行选项未提供值时使用的默认值。

下面会将默认值设置为dev

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

现在,如果您将默认值设置为空或不存在的值,即foobar,那么您可能会获得想要的效果并中止执行。

另外,the documentation on overwriting variables 在这种情况下可能会提供其他有用的提示。

【讨论】:

  • 不幸的是,无服务器将空解释为“默认”(== 'dev')。 'foobar' 将是一个有效的部署阶段,因为您可以即时创建阶段。
【解决方案2】:

也许您可以为此编写一个无服务插件。

另一种选择是使用 Jeremy Daly (https://github.com/jeremydaly/serverless-stage-manager) 的这个插件并从 custom.stages 中删除 dev

【讨论】:

    猜你喜欢
    • 2020-05-17
    • 2018-11-26
    • 1970-01-01
    • 2018-04-02
    • 2021-09-11
    • 2021-09-01
    • 2021-09-16
    • 1970-01-01
    • 2020-04-15
    相关资源
    最近更新 更多