如何在AWS CloudFormation中的两个参数之间共享允许的值

时间:2019-09-05 06:58:00

标签: amazon-cloudformation

如何在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。任何人都可以帮忙。

1 个答案:

答案 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模板语言。根据项目的性质,您可以选择其他工具来进行预处理。