【问题标题】:Serverless option as default value for option not working无服务器选项作为选项不起作用的默认值
【发布时间】:2021-01-01 22:06:37
【问题描述】:

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

${opt:fb,${opt:environment,'dev'}}

但是有些问题,因为这个错误总是在我调用sls deploy时出现:

A valid option to satisfy the declaration 'opt:fb,dev' could not be found.

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

【问题讨论】:

    标签: serverless-framework serverless aws-serverless serverless-architecture


    【解决方案1】:

    根据您的表达,您正在尝试执行双重条件。好像不行。

    ${opt:fb,${opt:environment,'dev'}}

    1. ${opt:environment,'dev'} - 当 opt:environment 未定义时,值设置为 'dev' (也许你的意思是 选择:阶段
    2. 变量名已建:opt:fb,dev - 找不到。

    尝试简化和拆分您的选项:

    custom:
        cliEnv: ${opt:environment, 'dev'}
        conditionEnv: ${opt:fb, ${self:custom.cliEnv}}
    

    【讨论】:

      【解决方案2】:

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

      ${opt:fb, "${opt:environment, 'dev'}"}
      

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

      例如:

      stage: ${opt:stage, "${env:stage, 'dev'}"}
      region: ${opt:region, "${env:region, 'us-east-1'}"}
      

      舞台和区域都有一个默认值,可以被环境变量覆盖,而该变量又可以被 CLI 参数覆盖。

      【讨论】:

      • 感谢您的友好回复,我尝试了您的建议,这是我的 serverlessVars 文件:paste.ubuntu.com/p/Sxzn8r7dZ8,这里是我的步进函数 yml:paste.ubuntu.com/p/Mk53fwhjsc 每次运行 sls deploy --environment dev 时都会出现以下错误:paste.ubuntu.com/p/GBW2v3bx4K
      • 自这个答案以来这可能已经改变,但是使用无服务器 2,您可以在没有嵌套的情况下拥有多个后备。所以上面的stage例子就变成了stage: ${opt:stage, env:stage, 'dev'}
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      相关资源
      最近更新 更多