AWS cloudformation将值传递给嵌套堆栈

时间:2017-04-12 16:50:20

标签: amazon-web-services nested amazon-cloudformation

我在使用嵌套堆栈创建堆栈时遇到问题。我有一个主模板(列出的模板用于测试,并且只引用一个嵌套堆栈)。我试图弄清楚如何将值从主服务器传递给嵌套堆栈,还是有更好的方法来做到这一点?每次尝试创建堆栈时,我都会得到:

Template format error: Unresolved resource dependencies [VpcCidrBlock] in the Resources block of the template.

我理解的意思是我放入主堆栈的参数没有传递给嵌套堆栈。

主模板:

{
    "AWSTemplateFormatVersion" : "2010-09-09",
    "Description" : "Master template",
    "Parameters" : {
        "availabilityZone" : {
            "Default" : "us-east-1d",
            "Description" : "Enter AvailabilityZone.",
            "Type" : "String"
        },
        "VpcCidrBlock" : {
            "Default" : "10.0.0.0/16",
            "Description" : "VPC CIDR Block.",
            "Type" : "String"
        }
    },
    "Resources" : {
        "VPCStack" : {
            "Type" : "AWS::CloudFormation::Stack",
            "Properties" : {
                "TemplateURL" : "https://s3.amazonaws.com/dev.url.templates/templates/vpcStack.json",
                "TimeoutInMinutes" : "5",
                "Parameters" : {
                    "VpcCidrBlock" : {
                        "Ref" : "VpcCidrBlock"
                    }
                }
            }
        }
    }
}

VPC模板:

{
    "AWSTemplateFormatVersion" : "2010-09-09",
    "Description" : "VPC template",
    "Resources" : {
        "VpcStack" : {
            "Type" : "AWS::EC2::VPC",
            "Properties" : {
                "EnableDnsSupport" : "true",
                "EnableDnsHostnames" : "true",
                "CidrBlock" : {
                    "Ref" : "VpcCidrBlock"
                },
                "Tags" : [
                    {
                        "Key" : "Application",
                        "Value" : {
                            "Ref" : "AWS::StackName"
                        }
                    }
                ]
            }
        }
    }
}

谢谢!

1 个答案:

答案 0 :(得分:1)

您的内部模板需要输入参数:

"Parameters" : {
    "VpcCidrBlock" : {
        "Description" : "VPC CIDR Block.",
        "Type" : "String"
    }
},

就像你的外部“包装”模板一样。