如何在Amazon的cloudformation模板中列出现有子网?

时间:2019-05-28 17:57:50

标签: json amazon-cloudformation

我正在使用制作多可用区灯叠的模板。我唯一要更改的是现有的VPC ID,添加2个现有子网以及命名RDB数据库,用户名和密码。当我单击“检查”按钮时,代码将验证正常,但是当我尝试启动网络时,它将失败并显示代码错误,     “模板包含错误。:模板格式错误:每个Description成员必须是字符串。”

我一直在寻找例如SIMPLE模板,它们不使用任何foo-bar类型的“每个人都知道这将被他们自己的值填充”的东西。我已经花了几个小时进行搜索和测试。这是我做过的第一个,这不可能那么难,对吧? 我正在使用建议的AMI列表,尽管将来我会改用自定义的AMI。

"Parameters" : {
    "VpcId" : {
      "Type" : "AWS::EC2::VPC::Id",
      "Description" : "vpc-123456789456",
      "ConstraintDescription" : "must be the VPC Id of an existing Virtual Private Cloud."
},

"Subnets" : {
  "Type" : "List<AWS::EC2::Subnet::Id>",
  "Description" : [
      "subnet-12345621ff4c" ,
      "subnet-1234562188d1"],

这是我发现的唯一未抛出错误的消息,提示“期望':'而不是','” 我应该将名称列出为 “列表”

1 个答案:

答案 0 :(得分:0)

"Description"必须是字符串。创建堆栈时,它是在用户界面中显示的文字描述。

我认为您正在寻找"Default""AllowedValues"。万一您的模板用户未指定任何内容,第一个将设置默认值。要放置值列表,您需要用逗号分隔它们。例如:

"Parameters": {
    "VpcId": {
        "Type": "AWS::EC2::VPC::Id",
        "Default": "vpc-123456789456",
        "ConstraintDescription": "must be the VPC Id of an existing Virtual Private Cloud."
    },

    "Subnets": {
        "Type": "List<AWS::EC2::Subnet::Id>",
        "Default": "subnet-12345621ff4c,subnet-1234562188d1"
    }
}

第二个是用户可以选择的允许值的列表。那个确实列出了清单。例如:

"Parameters": {
    "VpcId": {
        "Type": "AWS::EC2::VPC::Id",
        "AllowedValues": ["vpc-123456789456", "vpc-xxx"],
        "ConstraintDescription": "must be the VPC Id of an existing Virtual Private Cloud."
    }
}

我不确定用户是否选择了错误的"ConstraintDescription"。我认为这仅适用于"AllowedPattern"

是的,这可能会非常困难并且令人沮丧,但是随着时间的推移,它确实变得越来越容易。学习曲线很陡。