2015-11-02 43 views
1

我遇到了我的CFN模板的问题。我在Parameters中定义了一个CIDR块,并希望在安全组资源中将其用作CidrIp“属性值CidrIp必须是字符串类型”cloudformation

但是,当我运行我的堆栈时,我得到Value of property CidrIp must be of type String错误,堆栈正在回滚。

这是我最小的失败模板。我想用VPCCidrBlock来定义CidrIp

有趣的是,AWS的样本模板LAMP_Multi_AZ的确完全一样。

{ 
    "AWSTemplateFormatVersion": "2010-09-09", 
    "Description": "A cloud VPC", 
    "Metadata": { 
    }, 
    "Resources": { 
    "myvpc": { 
     "Type": "AWS::EC2::VPC", 
     "Properties": { 
     "CidrBlock": { 
      "Ref": "VPCCidrBlock" 
     } 
     } 
    }, 
    "SipserverSecurityGroup": { 
     "Type": "AWS::EC2::SecurityGroup", 
     "Properties": { 
     "GroupDescription": "Enable VPC access", 
     "VpcId": { 
      "Ref": "myvpc" 
     }, 
     "SecurityGroupIngress": [ 
      { "IpProtocol": "tcp", "FromPort": "22", "ToPort": "22", "CidrIp": { "Ref": "VPCCidrBlock" } }, 
      { "IpProtocol": "udp", "FromPort": "5060", "ToPort": "5060", "CidrIp": { "Ref:": "VPCCidrBlock" } } 
     ] 
     } 
    } 
    }, 
    "Parameters": { 
    "VPCCidrBlock": { 
     "Description": "Main CIDR block for the whole VPC", 
     "Type": "String", 
     "MinLength": "9", 
     "MaxLength": "18", 
     "Default": "10.13.0.0/16", 
     "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", 
     "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." 
    } 
    } 
} 
+0

问题在于''参考:“'而不是'”参考“'。有趣的是,它证实确定。 – Darek

回答

1

奇怪的问题。稍微练习一下你的例子。

{ 
    "AWSTemplateFormatVersion": "2010-09-09", 
    "Description": "A cloud VPC", 
    "Metadata": { 
    }, 
    "Resources": { 
    "myvpc": { 
     "Type": "AWS::EC2::VPC", 
     "Properties": { 
     "CidrBlock": { 
      "Ref": "VPCCidrBlock" 
     } 
     } 
    }, 
    "SipserverSecurityGroup": { 
     "Type": "AWS::EC2::SecurityGroup", 
     "Properties": { 
     "GroupDescription": "Enable VPC access", 
     "VpcId": { 
      "Ref": "myvpc" 
     }, 
     "SecurityGroupIngress": [ 
      { "IpProtocol": "tcp", "FromPort": "22", "ToPort": "22", "CidrIp": {"Ref": "VPCCidrBlock"}}, 
      { "IpProtocol": "udp", "FromPort": "5060", "ToPort": "5060", "CidrIp": {"Ref": "VPCCidrBlock"}} 
     ] 
     } 
    } 
    }, 
    "Parameters": { 
    "VPCCidrBlock": { 
     "Description": "Main CIDR block for the whole VPC", 
     "Type": "String", 
     "MinLength": "9", 
     "MaxLength": "18", 
     "Default": "10.13.0.0/16", 
     "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", 
     "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." 
    } 
    } 
} 

适合我。有可能是某些特殊字符/编码存在问题吗?

0

我也遇到了类似的问题,我可以指出这个问题。我使用“ref”而不是“Ref”来引用参数。

相关问题