是否可以检查前提条件并在创建CloudFormation堆栈时不满足某些前提条件时抛出错误?
例如,我想将Stack的创建限制为us-east-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"
}
}
}
有没有更好的引发错误的方法?
发布于 2016-12-19 22:28:03
在您的示例中,最好使用AWS伪参数。只需创建一个条件来检查"AWS::Region“是否等于us-east-1。
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html
不能真的想出一种通用的方法来检查一切,这取决于情况。例如,如果您正在处理参数,则可以使用正则表达式或设置允许值:
“参数”:{ "InstanceTypeParameter“:{ "Type”:"String"," Default“:"t2.micro","AllowedValues”:"t2.micro",“m1.mall”," m1.large ","Description“:”输入t1.micro,m1.mall,或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
有很多可能性。:)
https://stackoverflow.com/questions/40840506
复制相似问题