参数验证失败:参数名称<some parameter =“”>的参数值不存在。用户请求回滚

时间:2017-01-09 20:12:56

标签: amazon-web-services amazon-cloudformation

为什么此AWS CloudFormation会继续回滚的任何建议?

{
    "Description" : "Single Instance",

    "Resources" : {
        "EC2Instance" : {
            "Type" : "AWS::EC2::Instance",
            "Properties" : {
                "ImageId" : "ami-b73b63a0",
                "InstanceType" : "t2.micro",
                "KeyName" : "aws-key-here",
                "Tags" : [
                    {
                        "Key" : "Name",
                        "Value" : "test"
                    }
                  ],
                "SubnetId" : { 
                    "Fn::Select" : [ "0", { "Ref" : "Subnets" } ] 
                }
            }
        }
    },

    "Parameters": {
        "Subnets": {
            "Type": "List<AWS::EC2::Subnet::Id>",
            "Description": "The list of SubnetIds, for at least two Availability Zones in the region in your Virtual Private Cloud (VPC)"
        }
    }
}

特定错误似乎与Subnets Ref:

有关
    Parameter validation failed: parameter value for parameter name Subnets does not exist. Rollback requested by user.

我已经在我的AWS管理控制台中创建了1个有效的子网,并测试了它在手动启动EC2实例时的工作原理。

或者有没有办法调试/获得更详细的输出?

3 个答案:

答案 0 :(得分:1)

模板中的Subnets Parameter类型为List<AWS::EC2::Subnet::Id>,需要引用有效子网ID列表。您看到的错误意味着您将至少一个无效的子网ID传递给Subnet参数。

如果您使用aws cloudformation create-stack从AWS CLI部署堆栈,则需要使用--parameters ParameterKey=Subnets,ParameterValue=subnet-12345678选项传递有效参数值。

如果您要从管理控制台进行部署,则需要使用提供的对话框specify stack parameters,然后从下拉列表中选择子网ID。

答案 1 :(得分:1)

我遇到了同样的问题。在我的情况下,我创建了名为&#34; mykey&#34;在孟买地区。但是当我真正开始创建云层基础设施时,我将该地区改为美国东部。现在在我的Cloud Formation Infrastructure中,我提供了Key的名称&#34; mykey&#34;。现在问题是关键&#34; mykey&#34;在孟买地区成立。 因此,我再次在&#34;美国东部&#34;地区和我的问题消失了。

此致 亚太区首席技术官Matt

答案 2 :(得分:0)

就我而言,这是凭证密钥和访问密钥的问题。我的默认值是另一个帐户,我试图在错误的帐户上创建堆栈。