Как проверить, существует ли параметр в Systems Manager из CloudFormation

Читая документацию 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

0 ответов

Другие вопросы по тегам