如何在AWS Cloudformation模板中共享一个参数的允许值与另一个参数,因为它们是重复项。请参考以下代码段。
"Parameters": {
"mymasterinstance": {
"Description" : "My master instance",
"Type": "String",
"Default" : "t2.micro",
"AllowedValues": ["t2.micro","t2.small","t2.large","t2.xlarge"]
},
"myslaveinstance": {
"Description": "My slave instance",
"Type" :"String",
"Default": "t2.micro",
"AllowedValues" : ["t2.micro","t2.small","t2.large","t2.xlarge"]
},
},
我想与myslaveinstance共享mymasterinstance的AllowedValues。任何人都可以帮忙。
答案 0 :(得分:1)
我不确定我是否很好地理解了您的问题,但是我想您想一次定义这些实例类型值,并在所有地方使用它。如果这是问题所在,则不能使用纯Yaml / json模板。
您可以尝试在纯文本文件中定义配置数据,并使用模板语言,例如我们使用jinja2,在任何需要的地方读取这些值。
在我的公司中,我们大量使用jinja2来使模板的大部分自动化。这样做,您可能最终会遇到类似这样的情况:
template.json.jinja
"Parameters": {
"mymasterinstance": {
"Description" : "My master instance",
"Type": "String",
"Default" : "t2.micro",
"AllowedValues": "{{ instance_allowed_values }}"
},
"myslaveinstance": {
"Description": "My slave instance",
"Type" :"String",
"Default": "t2.micro",
"AllowedValues" : "{{ instance_allowed_values }}"
},
}
vars.json
{
"instance_allowed_values": ["t2.micro","t2.small","t2.large","t2.xlarge"]
}
注意: jinja 是一种python模板语言。根据项目的性质,您可以选择其他工具来进行预处理。