参数验证失败:参数名称<某些参数>的参数值不存在

Sno*_*ash 5 amazon-web-services aws-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)"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

具体错误似乎与子网引用有关:

    Parameter validation failed: parameter value for parameter name Subnets does not exist. Rollback requested by user.
Run Code Online (Sandbox Code Playgroud)

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

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

wjo*_*dan 4

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

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

如果您从管理控制台进行部署,则需要使用提供的对话框指定堆栈参数,并从下拉列表中选择子网 ID。