2016-12-12 6 views
2

У меня есть следующее условие, в соответствии с этим условием я создаю некоторые ресурсы, а если это условие не выполняется, я создаю другие ресурсы.Отменить условие в шаблоне CloudFormation

Conditions: 
    ISProduction: 
    "Fn::Equals": 
     - !Ref Environment 
     - staging 
    ISNotProduction: 
     "Fn::Not": 
     - !Ref ISProduction 

Однако, когда я пытаюсь оценить шаблон сниппета выше, я получаю ошибку:

Template error: every Fn::Not object requires one boolean parameter

Как я могу отрицать состояние в Formation Шаблон Cloud? Или как я могу использовать отрицание ISProduction?

Я также пробовал Условие ниже в создании ресурса, но я, но шаблон, не передал проверку, потому что «каждый член условия должен быть строкой».

Condition: 
     "Fn::Not": 
     - !Ref ISProduction 

ответ

4

Вы можете ссылаться на другие условия, используя ключ Condition перед своим логическим идентификатором условия.

Associating a Condition

To conditionally create resources, resource properties, or outputs, you must associate a condition with them. Add the Condition: key and the logical ID of the condition as an attribute to associate a condition, as shown in the following snippet. AWS CloudFormation creates the NewVolume resource only when the CreateProdResources condition evaluates to true.

Ваш пример должен выглядеть следующим образом:

Conditions: 
    ISProduction: 
    "Fn::Equals": 
     - !Ref Environment 
     - staging 
    ISNotProduction: 
     "Fn::Not": 
     - Condition: ISProduction 

При желании вы можете записать его в сокращенном виде:

Conditions: 
    ISProduction: 
    !Equals [!Ref Environment, staging] 
    ISNotProduction: 
    !Not [Condition: ISProduction]