Безсерверная структура AWS имя стека псевдопараметров - PullRequest
0 голосов
/ 30 апреля 2020

Вопрос

  • Как правильно получить выходные данные стека облачной информации в файле serverless.yml без жесткого кодирования имени стека?

Шаги

У меня есть файл serverless.yml, в который я импортирую шаблон облачной информации для создания кластера ElastiCache.

Когда я пытаюсь это сделать, я получаю эту ошибку:

  Serverless Error ---------------------------------------

  Invalid variable reference syntax for variable AWS::StackName. You can only reference env vars, options, & files. You can check our docs for more info.


В моем файле я хотел бы представить в качестве переменной среды вывод ElastiCacheAddress из стека облачной информации. Я использую безсерверный плагин псевдопараметров для получения выходных данных:

# Here is where I try to reference the CF output value
service: hello-world

provider:
  name: aws
  # ...
  environment:
    cacheUrl: ${cf:#{AWS::StackName}.ElastiCacheAddress}

# Reference to the CF template
resources: 
  - '${file(./cf/cf-elasticache.yml)}'

Шаблон CF является шаблоном из репозитория AWS Samples GitHub .

Фрагмент с выводом здесь:

  ElastiCacheAddress:
    Description: ElastiCache endpoint address
    Value: !If [ IsRedis, !GetAtt ElastiCacheCluster.RedisEndpoint.Address, !GetAtt ElastiCacheCluster.ConfigurationEndpoint.Address]
    Export:
      Name: !Sub ${AWS::StackName}-ElastiCacheAddress

1 Ответ

0 голосов
/ 30 апреля 2020

Вы можете использовать обходной путь, чтобы пройти через эти синтаксические предостережения. В этом случае я бы предложил вам создать узел custom для установки переменных, которые вы хотите использовать повторно. Затем вы можете ссылаться на эти переменные, используя только синтаксис Serverless Framework, чтобы избежать этой ошибки, например:

# Here is where I try to reference the CF output value
service: hello-world

custom:
  stackName:'#{AWS::StackName}'

provider:
  name: aws
  # ...
  environment:
    cacheUrl: ${cf:${self:custom.stackName}.ElastiCacheAddress}

# Reference to the CF template
resources: 
  - '${file(./cf/cf-elasticache.yml)}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...