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

Parameter validation failed: parameter value for parameter name <some parameter> does not exist. Rollback requested by user

关于此 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)"
        }
    }
}

具体错误似乎与子网参考有关:

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

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

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

您模板中的 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使用提供的对话框,并select下拉列表中的子网 ID。

我遇到了同样的问题。在我的例子中,我在孟买地区创建了名称为 "mykey" 的密钥。但是当我真正开始创建 Cloud Formation 基础架构时,我将区域更改为美国东部。现在,在我的 Cloud Formation Infrastructure 中,我将密钥名称提供为 "mykey"。现在的问题是密钥 "mykey" 是在孟买地区创建的。 因此,我在 "US-East" 区域再次创建密钥,我的问题就消失了。

问候 希特什

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