【问题标题】:how to send the parameters from main template to child template in cloudformation如何将参数从主模板发送到cloudformation中的子模板
【发布时间】:2017-07-03 01:47:52
【问题描述】:

我正在尝试从用户那里获取两个参数,然后将其传递给我在主模板中指定的模板。在我的主模板中,我有:

{
"Parameters": {
    "appName": {
        "Description": "enter the app name",
        "Type": "String",
        "Default": "bn-test-jun"
    },
    "appEnv": {
        "Description": "enter the app name",
        "Type": "String",
        "Default": "bn-test-jun"
    }
},
"Resources": {
    "CodeDeployEC2InstancesStack": {
        "Type": "AWS::CloudFormation::Stack",
        "Properties": {
            "TemplateURL": "https://s3.amazonaws.com/............../beanstalk.json",
            "TimeoutInMinutes": "60"
        }
    },
    "myS3": {
        "Type": "AWS::S3::Bucket",
        "Properties": {
            "AccessControl": "PublicRead",
            "BucketName": "ssssssss-test"
        }
    }
}
}

如您所见,我正在处理 beanstalk 模板,并且我得到了要创建的 beanstalk 的环境和应用程序的名称,因此我需要将这些变量传递给 beanstalk 模板。这是我的豆茎模板:

{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": {
    "appName": {
        "Description": "enter the app name",
        "Type": "String",
        "Default": "bn-test-jun"
    },
    "appEnv": {
        "Description": "enter the app name",
        "Type": "String",
        "Default": "bn-test-jun"
    }
},
"Resources": {
    "sampleApplication": {
        "Type": "AWS::ElasticBeanstalk::Application",
        "Properties": {
            "Description": "AWS Elastic Beanstalk Sample Application",
            "ApplicationName": {
                "Ref": "appName"
            }
        }
    },
    "sampleApplicationVersion": {
        "Type": "AWS::ElasticBeanstalk::ApplicationVersion",
        "Properties": {
            "ApplicationName": {
                "Ref": "sampleApplication"
            },
            "Description": "AWS ElasticBeanstalk Sample Application Version",
            "SourceBundle": {
                "S3Bucket": "hamed-test-war",
                "S3Key": "deployment.war"
            }
        }
    },
    "sampleConfigurationTemplate": {
        "Type": "AWS::ElasticBeanstalk::ConfigurationTemplate",
        "Properties": {
            "ApplicationName": {
                "Ref": "sampleApplication"
            },
            "Description": "AWS ElasticBeanstalk Sample Configuration Template",
            "OptionSettings": [{
                    "Namespace": "aws:autoscaling:asg",
                    "OptionName": "MinSize",
                    "Value": "2"
                },
                {
                    "Namespace": "aws:autoscaling:asg",
                    "OptionName": "MaxSize",
                    "Value": "3"
                },
                {
                    "Namespace": "aws:elasticbeanstalk:environment",
                    "OptionName": "EnvironmentType",
                    "Value": "LoadBalanced"
                }
            ],
            "SolutionStackName": "64bit Amazon Linux 2017.03 v2.6.1 running Tomcat 8 Java 8"
        }
    },
    "sampleEnvironment": {
        "Type": "AWS::ElasticBeanstalk::Environment",
        "Properties": {
            "ApplicationName": {
                "Ref": "sampleApplication"
            },
            "Description": "AWS ElasticBeanstalk Sample Environment",
            "TemplateName": {
                "Ref": "sampleConfigurationTemplate"
            },
            "VersionLabel": {
                "Ref": "sampleApplicationVersion"
            },
            "EnvironmentName": {
                "Ref": "appEnv"
            }
        }
    }
},
"Outputs": {
    "applicationName11": {
        "Description": "The application chosen by user is :",
        "Value": {
            "Ref": "appEnv"
        }
    }
}

}

如您所见,我正在尝试使用 Ref appname 来获取变量,但这不起作用,因为 appname 仅在父模板中可用。所以我正在寻找一种将参数发送到 beanstalk.template 的方法。有可能吗?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    您似乎正在使用嵌套堆栈来拉入模板。如果是这样,可以使用Parameters 属性将参数传递给子模板,如下所示:

    {
       "AWSTemplateFormatVersion" : "2010-09-09",
       "Resources" : {
          "myStackWithParams" : {
             "Type" : "AWS::CloudFormation::Stack",
             "Properties" : {
                "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-1/EC2ChooseAMI.template",
                "Parameters" : {
                   "InstanceType" : "t1.micro",
                   "KeyName" : "mykey"
                }
             }
          }
       }
    }
    

    【讨论】:

    猜你喜欢
    • 2017-03-04
    • 1970-01-01
    • 2015-08-05
    • 2018-08-17
    • 2020-06-08
    • 2021-01-11
    • 2012-03-27
    • 2021-12-05
    • 1970-01-01
    相关资源
    最近更新 更多