#amazon-cloudformation #aws-cli
#aws-cloudformation #aws-cli
Вопрос:
У меня есть шаблон Cloudformation с двумя условиями
Conditions:
ProdEnvironment:
!Equals [ !Ref VPCStackNameParameter, 'ProductionVPC' ]
CertExists:
!Not [!Equals [!Ref SslCertificateArn, '']]
Как я могу указать ОБА условия в ресурсе, который я хочу создать? Что-то вроде
Resources:
Alb:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Condition: ProdEnvironment !And CertExists <--- this gives error!
Комментарии:
1. Я не думаю, что это возможно. Почему бы не определить новое условие, содержащее оба других условия?
2. @kichik, как мне это сделать, используя ! А функция? Итак, «ProdAndCert: !И, — Условие: ProdEnvironment, — Условие: CertExists»
Ответ №1:
Вы можете создать одно условие, которое выполняет оба.
Conditions:
ProdEnvironment:
!Equals [ !Ref VPCStackNameParameter, 'ProductionVPC' ]
CertExists:
!Not [!Equals [!Ref SslCertificateArn, '']]
CertExistsAndProd: !And
- !Equals [ !Ref VPCStackNameParameter, 'ProductionVPC' ]
- !Not [!Equals [!Ref SslCertificateArn, '']]
Resources:
Alb:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Condition: CertExistsAndProd
Документация, похоже, предполагает, что вы также можете ссылаться на условия в conditions. Итак, вы также можете попробовать:
Conditions:
ProdEnvironment:
!Equals [ !Ref VPCStackNameParameter, 'ProductionVPC' ]
CertExists:
!Not [!Equals [!Ref SslCertificateArn, '']]
CertExistsAndProd: !And
- !Condition ProdEnvironment
- !Condition CertExists
Resources:
Alb:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Condition: CertExistsAndProd