无服务器 Lambda 从单独的 YAML 文件加载信息

Serverless Lambda loading information from separate YAML file

我试图将我的环境变量与直接在我的 serverless.yml 文件中实现分开,并阅读我可以使用单独的 yaml 或 json 文件并使用命令从这些文件中提取值${file(./file.yml):property},但尽管遵循了此过程,我还是收到一条与 environment: 部分相关的错误消息,该部分引用了这些自定义设置值,这让我相信它与我的文件选择有关。

错误信息:

can not read a block mapping entry; a multiline key may not be an implicit key in "/Users/user/Desktop/Projects/lambdas/playground/serverless.yml" at line 18, column 14:
      environment:

serverless.yml (运行 in stage=dev, 我有一个问题。如果我 运行 this in stage=prod 有没问题。):

custom:
  domain:
    dev: ${file(./local-keys.yml):apiKey}
    prod: "domain.com - prod"
  apiKey:
    dev: ""
    prod: "123apikey"

provider:
  name: aws
  runtime: nodejs10.x
  stage: '${opt:stage, 'dev'}'
  environment:
    DOMAIN: ${self:custom.domain.${self:provider.stage}}
    API_KEY: ${self:custom.apiKey.${self:provider.stage}}

本地-keys.yml:

apiKey: "THIS IS A TEST"

我认为这就是你布置舞台的方式。当我 运行 sls print -s dev

时,这对我有用
service: test
custom:
  domain:
    dev: ${file(./local-keys.yml):apiKey}
    prod: "domain.com - prod"
  apiKey:
    dev: ""
    prod: "123apikey"

provider:
  name: aws
  runtime: nodejs10.x
  stage: ${opt:stage}
  environment:
    DOMAIN: ${self:custom.domain.${self:provider.stage}}
    API_KEY: ${self:custom.apiKey.${self:provider.stage}}

sls print -s dev 输出:

service: test
custom:
  domain:
    dev: THIS IS A TEST
    prod: domain.com - prod
  apiKey:
    dev: ''
    prod: 123apikey
provider:
  stage: dev
  name: aws
  runtime: nodejs10.x
  environment:
    DOMAIN: THIS IS A TEST
    API_KEY: ''