无服务器选项作为选项不起作用的默认值

3no*_*mis 3 serverless-framework serverless-architecture serverless aws-serverless

您好,我正在尝试使用无服务器执行以下操作:如果我没有提供选项,我希望它选择另一个选项

${opt:fb,${opt:environment,'dev'}}
Run Code Online (Sandbox Code Playgroud)

然而,有些事情是错误的,因为这个错误总是在我打电话时出现sls deploy

A valid option to satisfy the declaration 'opt:fb,dev' could not be found.
Run Code Online (Sandbox Code Playgroud)

我不明白出了什么问题,因为显然它似乎正确选择了该值。能帮我一下吗?谢谢

Mik*_*ick 5

要使这种类型的插值正常工作,请将内部变量用双引号引起来:

${opt:fb, "${opt:environment, 'dev'}"}
Run Code Online (Sandbox Code Playgroud)

此模式对于设置default -> envvar -> CLI option层次结构特别有用。

例如:

stage: ${opt:stage, "${env:stage, 'dev'}"}
region: ${opt:region, "${env:region, 'us-east-1'}"}
Run Code Online (Sandbox Code Playgroud)

阶段和区域都有一个默认值,可以由环境变量覆盖,而环境变量又可以由 CLI 参数覆盖。

  • 自这个答案以来,这可能已经发生了变化,但是使用 Serverless 2,您可以在没有嵌套的情况下拥有多个后备。所以上面的 stage 示例就变成了 `stage: ${opt:stage, env:stage, 'dev'}` (2认同)