Elastic Beanstalk 更改 ELB 类型

Elastic Beanstalk Change ELB Type

有谁知道是否可以将现有的 AWS Elastic Beanstalk 环境更改为 Application Load Balancer(而不是经典环境)。

据我所知,只有应用程序 ELB 可以使用 AWS WAF 和 DDOS "Shield" 进行保护,因此任何现有的 EB 应用程序都无法利用这些功能,因为它们具有经典的 ELB。

您好,根据 AWS 文档:

The Elastic Beanstalk Environment Management Console only supports creating and managing an Elastic Beanstalk environment with a Classic Load Balancer. For other options, see Application Load Balancer and Network Load Balancer.

还有

Note You can only set the load balancer type during environment creation. (Refer AWS Documetnation)

因此,当您通过 AWS CLI 将应用程序部署到 Elastic Beanstalk 时:

尝试

eb create test-env --elb-type network

eb create test-env --elb-type application

无法更改现有环境的负载均衡器类型,但我使用以下过程创建了一个带有应用程序负载均衡器(而不是经典负载均衡器)的克隆环境。

  1. 在控制台中,保存原环境的配置。
  2. 在终端 eb config get [save name] 中,您将在 .elasticbeanstalk\saved_configs 中获得一个文件。
  3. 编辑要添加的文件

OptionSettings: aws:elasticbeanstalk:environment: LoadBalancerType: application

并删除(如果有的话):

aws:elb:loadbalancer: CrossZone: true aws:elb:policies: ConnectionDrainingEnabled: true aws:elb:listener:443: [whatever]

您可以利用这个机会进行其他更改,例如升级 PlatformArn

  1. 将修改后的配置保存为[新保存名称]。
  2. 在终端中,eb config put [new save name] .
  3. 将您的 .ebextensions 更新为 LoadBalancerType: application 并可选择将侦听器添加到 elbv2。也可以稍后在控制台手动创建。

aws:elbv2:listener:443: ListenerEnabled: true SSLPolicy: ELBSecurityPolicy-TLS-1-2-2017-01 SSLCertificateArns: [your cert id] DefaultProcess: default Protocol: HTTPS Rules: ''

  1. 使用 eb create [new env name] --cfg [new save name]
  2. 创建一个新环境

现在您将拥有一个与旧环境并排使用不同负载均衡器类型的新环境。您可以执行测试,进行进一步的配置更改,然后如果一切正常,交换 CNAME 并终止之前的环境。

我发现更改现有应用程序以使用应用程序负载均衡器的最简单方法是同时使用控制台和 CLI:

  1. 在控制台中,保存原环境的应用配置。记下这个名字。我们将其用作 <saved-config-name>.
  2. 应用程序版本下记下最新的版本标签。我们将其用作 <app-version>.
  3. 来自 CLI 运行 eb create <new-environment-name> --elb-type application --cfg <saved-config-name> --version <app-version>
  4. 如果您在旧应用程序中配置了 HTTPs,请在新创建的应用程序中在 Load Balancer-->Listeners[=25 下的控制台中重新配置它=] 具有适当的证书。