我有一个既有私有子网又有公共子网的VPC,还有一个在私有子网中运行其实例的Elasticbeanstalk环境。 Elasticbeanstalk环境还具有经典的弹性负载均衡器,该负载均衡器必须位于公共子网中。不幸的是,EB一直将它与实例放在一起。
我使用环境上的elb选项将负载均衡器称为存在。 cloudformation的相关部分如下所示:
"accountapienv": {
"Type": "AWS::ElasticBeanstalk::Environment",
"Properties": {
"Tier": { "Type": "Standard", Name": "WebServer" }
"OptionSettings": [
{
"ResourceName": "AWSEBAutoScalingGroup",
"Namespace": "aws:autoscaling:asg",
"OptionName": "MinSize",
"Value": "2"
},
{
"Namespace": "aws:ec2:vpc",
"OptionName": "Subnets",
"Value": { "Fn::Join": [",", [ {"Ref": "privateuseast1b"}, {"Ref": "privateuseast1c" } ] ] }
},
{
"OptionName": "CrossZone",
"Namespace": "aws:elb:loadbalancer",
"Value": true
},
{
"OptionName": "ListenerProtocol",
"Namespace": "aws:elb:listener:443",
"Value": "HTTPS"
},
如果我要直接将平衡器作为"Type": "AWS::ElasticLoadBalancing::LoadBalancer"
对象来调用,那么将有一个subnets
选项,但是我将很难将其指向一个Elastic Beanstalk Environment实例池。 / p>
我不愿意移动我的实例。
那么如何将负载均衡器放入公共子网?
答案 0 :(得分:0)
找到了!是:
{
"Namespace": "aws:ec2:vpc",
"OptionName": "ELBSubnets",
"Value": ...
}
尽管为什么 AWS不知道这是一个 VPC 选项。