Можно ли повторно использовать встроенный текст в CloudFormation? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть несколько параметров, переданных в один из моих файлов конфигурации CloudFormation, таких как (YAML):

AWSTemplateFormatVersion: '2010-09-09'
Description: AWS CloudFormation Template for creating pipeline workflow.
Parameters:

  Opt1:
    Description: my opt1
    Type: String
    Default: opt1_default

  Opt2:
    Description: my opt2
    Type: String
    Default: opt2_default

  Opt3:
    Description: my opt3
    Type: String
    Default: opt3_default
  ...

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

...
Name: !Sub '${Opt1}-${Opt2}-${Opt3}'
...
Name: !Sub '${Opt1}-${Opt2}-${Opt3}'
...
Name: !Sub '${Opt1}-${Opt2}-${Opt3}'
...

Можно ли создать такую ​​ссылку, как:

SomeRef: !Sub '${Opt1}-${Opt2}-${Opt3}'

таким образом, чтобы я мог сделать:

...
Name: !Ref SomeRef
...
Name: !Ref SomeRef
...
Name: !Ref SomeRef
...

?

1 Ответ

0 голосов
/ 30 марта 2020

Вложенный шаблон без ресурсов и одного вывода может сделать это:

NameCreator.yaml

---
AWSTemplateFormatVersion: 2010-09-09
Description: 'Empty nested template'

Parameters:
  Opt1:
    Type: String
  Opt2:
    Type: String

Conditions:
  Never: !Equals [ a, b ]
Resources:
  NullResource:
    Type: Custom::Null
    Condition: Never

Outputs:
  Name:
    Value: !Sub '${Opt1}-${Opt2}'

А затем в основном шаблоне вызвать его:

  NameCreator:
    Type: AWS::CloudFormation::Stack
    Properties:
      Parameters:
        Opt1: !Ref Opt1
        Opt2: !Ref Opt2
      TemplateURL: https://mybucket.s3.amazonaws.com/NameCreator.yaml

и используйте его:

  Name: !GetAtt 'NameCreator.Outputs.Name'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...