Как проверить, существует ли параметр в Systems Manager из CloudFormation - PullRequest
0 голосов
/ 12 ноября 2018

Читая документацию AWS здесь , я нашел следующее утверждение:

AWS :: SSM :: Параметры :: Имя
Имя ключа параметра системного менеджера.
Используйте этот параметр, если вы хотите передать ключ параметра. Например, вы можете использовать этот тип для проверки того, что параметр существует.

Мне не удалось заставить его работать, каждый раз, когда я получаю: Ошибка проверки параметра: значение параметра ... для имени параметра ... не существует.

Стоит ли пытаться разрешить тип параметра AWS :: SSM :: Parameter :: Name ? В любом случае, я продолжал искать и нашел другое утверждение здесь :

Первый в списке используется для передачи имени ключа параметра как есть. CloudFormation не будет извлекать значение, сохраненное против него. Например, вы можете использовать этот тип для проверки того, что параметр существует в хранилище параметров.

Я, вероятно, не правильно понимаю, поэтому я хотел бы запросить пример на , как проверить, существует ли параметр в Systems Manager из CloudFormation?

Вариант использования:

В моем основном регионе все параметры хранятся в System Manager, а во втором (избыточность) - только несколько. В качестве примера рассмотрим не создание Zone / RecorSet дважды в каждом регионе. Для этого я использую условие, как показано ниже:

AWSTemplateFormatVersion: '2010-09-09'
Parameters:
  MainRegion:
    Type: String
    Default: 'us-east-1'
  PrivateFullyQualifiedDomainName:
    Type: 'AWS::SSM::Parameter::Name'
    Default: '/company/route53/private'
Conditions:
  CreateUniqueResources: !Equals [ !Ref 'AWS::Region', !Ref MainRegion ]
Resources:
  Route53Stack:
    Type: 'AWS::CloudFormation::Stack'
    Condition: CreateUniqueResources
    Properties:
      TemplateURL: [some s3 bucket]
      Parameters:
        PrivateDomainName: !Ref PrivateFullyQualifiedDomainName
Outputs:
  TestParameterName:
    # Outputs: /company/route53/private
    Value: !Ref PrivateFullyQualifiedDomainName

И вложенный стек:

AWSTemplateFormatVersion: '2010-09-09'
Parameters:
  PrivateDomainName:
    Type: 'AWS::SSM::Parameter::Value<String>'
Resources:
  [sutff...]
Outputs:
  TestParameterValue:
    # Outputs WHEN it exists: supersecretdomain.company.com
    Value: !Ref PrivateDomainName
...