Как проверить, существует ли параметр в 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