Безсерверная лямбда-загрузка информации из отдельного файла YAML - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь отделить переменные среды от непосредственного использования в моем файле 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 (Запустить в stage = dev, у меня возникла проблема. Если я запустил это в 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}}

local-keys.yml:

apiKey: "THIS IS A TEST"

1 Ответ

1 голос
/ 04 октября 2019

Я думаю, это то, как вы готовите сцену. Это работает для меня, когда я запускаю 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 output:

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: ''
...