2016-11-28 8 views
0

Можно ли проверить предварительные условия и поднять ошибку, если некоторые предварительные условия не выполняются при создании стека CloudFormation?Проверить предварительные условия при создании CloudFormation Stack

Например, я хочу ограничить создание стека для нас - восток-1 региона. Хотя следующий код работает, то [FAILED] сообщение противоречит окончательному статусу стеки, который всегда CREATE_COMPLETE независимо от регионов:

{ 
    "Conditions": { 
    "ValidRegion": { 
     "Fn::Equals": [ 
     { 
      "Ref": "AWS::Region" 
     }, 
     "us-east-1" 
     ] 
    } 
    }, 
    "Description": "Certificate for Global services", 
    "Outputs": { 
    "GlobalCertificateArn": { 
     "Description": "Certificate ARN", 
     "Value": { 
     "Fn::If": [ 
      "ValidRegion", 
      { 
      "Ref": "GlobalCertificate" 
      }, 
      "[FAILED] Failed to create certificate for Global services. Create this stack in us-east-1." 
     ] 
     } 
    } 
    }, 
    "Parameters": { 
    "Domain": { 
     "Description": "Domain name of this website", 
     "Type": "String" 
    } 
    }, 
    "Resources": { 
    "GlobalCertificate": { 
     "Condition": "ValidRegion", 
     "Properties": { 
     "DomainName": { 
      "Ref": "Domain" 
     } 
     }, 
     "Type": "AWS::CertificateManager::Certificate" 
    } 
    } 
} 

Есть ли лучший способ поднять ошибку?

ответ

0

В случае вашего примера было бы лучше использовать псевдо-параметры AWS. Просто создайте условие, которое проверяет, является ли «AWS :: Region» равным us-east-1.

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html

Не могу придумать общий способ проверить все это зависит от ситуации. Например, если вы имеете дело с параметрами, вы можете использовать регулярные выражения или установить допустимые значения:

«Параметры»: { «InstanceTypeParameter»: { «Тип»: «String», «по умолчанию»: «t2.micro», «Разрешенные значения»: [«t2.micro», «m1.small», «m1.large»], «Описание»: «Введите t1.micro, m1.small или m1.large По умолчанию используется t1.micro. " }}

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html

Или вы можете комбинировать сопоставления, которые содержат желаемые значения, с условиями.

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/mappings-section-structure.html

Много возможностей. :)

Смежные вопросы