如何通过Cloudformation为Elastic Beanstalk Elastic Load Balancer选择一个子网?

时间:2019-03-08 02:39:05

标签: amazon-web-services amazon-cloudformation amazon-elastic-beanstalk amazon-elb

我有一个既有私有子网又有公共子网的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>

我不愿意移动我的实例。

那么如何将负载均衡器放入公共子网?

1 个答案:

答案 0 :(得分:0)

找到了!是:

{
     "Namespace": "aws:ec2:vpc", 
     "OptionName": "ELBSubnets", 
     "Value": ...
}

尽管为什么 AWS不知道这是一个 VPC 选项。