Как указать условия нескольких ресурсов в шаблоне Cloudformation?

#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