在Cloudformation Beanstalk脚本中将子网添加到ELB和子网值

use*_*074 3 amazon-web-services aws-cloudformation amazon-elastic-beanstalk

我不是JSON专家,但是我能够操纵AWS Beanstalk VPC cloudformation模板从S3中提取.WAR文件并部署为新应用程序。与原始脚本(仅创建2个子网)相反,我还操纵了脚本为公共创建了2个附加子网,为私有创建了另外一个子网。以下代码段出现问题。我需要处理这样的EC2实例和ELB使用我在script.So创建的其他子网的价值子网我将需要添加PrivateSubnetPrivateSubnet2ELB值将相同。

"SampleEnvironment" : {
  "Type" : "AWS::ElasticBeanstalk::Environment",
  "Properties" : {
    "ApplicationName" : { "Ref" : "SampleApplication" },
    "EnvironmentName" : "Sandbox",
     "Description" :  "AWS Elastic Beanstalk Environment running Python Sample Application",
     "SolutionStackName" : "64bit Amazon Linux 2014.02 running Tomcat 7 Java 7",
     "OptionSettings" : [
       {"Namespace" : "aws:autoscaling:launchconfiguration", "OptionName" : "SSHSourceRestriction", "Value" : { "Fn::Join" : [ "", ["tcp,22,22,", { "Ref" : "BastionSecurityGroup" }]]}},
       {"Namespace" : "aws:autoscaling:launchconfiguration", "OptionName" : "SecurityGroups", "Value" : { "Ref" : "BeanstalkSecurityGroup" }},
       {"Namespace" : "aws:autoscaling:launchconfiguration", "OptionName" : "EC2KeyName", "Value" : { "Ref" : "InstanceKeyName" }},
       {"Namespace" : "aws:ec2:vpc", "OptionName" : "VPCId", "Value" : { "Ref" : "VPC" }},
       {"Namespace" : "aws:ec2:vpc", "OptionName" : "Subnets", "Value" : { "Ref" : "PrivateSubnet" }},
       {"Namespace" : "aws:ec2:vpc", "OptionName" : "ELBSubnets", "Value" : { "Ref" : "PublicSubnet" }}],
     "VersionLabel" : "Initial Version"
  }
}
Run Code Online (Sandbox Code Playgroud)

},

任何帮助将不胜感激..

小智 5

当我试图找到相同问题的答案时,会碰到这个问题

OptionName值必须是单个逗号分隔的字符串,例如“ a,b”

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html

与RDSSubnetGroup中的SubnetID不同,您仅可以列出这些子网ID,例如“ a”,“ b”

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnet-group.html

我使用了内在的join函数将模板中更远的一些引用合并为一个字符串。

{
  "Namespace" : "aws:ec2:vpc", 
  "OptionName" : "Subnets", 
  "Value" : { "Fn::Join" : [ ",", [ { "Ref": "PrivateSubnetAvailabiltyZoneA" }, {"Ref": "PrivateSubnetAvailabiltyZoneB"} ] ] } 
},
{
  "Namespace" : "aws:ec2:vpc", 
  "OptionName" : "ELBSubnets", 
  "Value" : { "Fn::Join" : [ ",", [ { "Ref": "PublicSubnetAvailabiltyZoneA" }, {"Ref": "PublicSubnetAvailabiltyZoneB"} ] ] } 
},
Run Code Online (Sandbox Code Playgroud)