如何使用 CLI 配置 Elastic beanstalk 经典负载均衡器以终止 HTTPS

Posted

技术标签:

【中文标题】如何使用 CLI 配置 Elastic beanstalk 经典负载均衡器以终止 HTTPS【英文标题】:How to configure Elastic beanstalk classic load balancer to terminate HTTPS using the CLI 【发布时间】:2018-01-24 21:12:20 【问题描述】:

我使用 Elastic Beanstalk CLI 将我的 Spring Boot 应用程序部署到 EB。 只要我不配置 HTTPS,它就可以正常工作。

根据userdocs,我需要做的就是在我的 .ebextensions 文件夹中创建一个 .config 文件,其中包含以下内容

option_settings:
    aws:elb:listener:443:
        SSLCertificateId: <arn for cert>
        ListenerProtocol: HTTPS
        InstancePort: 5000
        InstanceProtocol: HTTP
    aws:elb:listener:80:
        ListenerEnabled: false

但是,如果我使用该配置创建环境,则由于无法与 ELB 通信,运行状况检查会失败。查看 AWS 控制台中的环境,HTTP 和 HTTPS 侦听器端口均已禁用,并且 SSL 证书未与负载均衡器关联。

鉴于行为的变化,我认为可以肯定地说 .config 文件正在被拾取和应用,即使配置不正确。

如果我在此阶段手动尝试通过 EB Web GUI 启用 HTTPS 侦听器,则会收到以下错误。

LoadBalancerHTTPSPort: You have specified both the @deprecated(:default.aws:elb:loadbalancer:LoadBalancerHTTPSPort) option as well as one in the new aws:elb:listener:443 namespace. The :default.aws:elb:loadbalancer:LoadBalancerHTTPSPort option will be ignored.

所以我什至无法手动启用它。

这里有很多关于上传自定义 nginx conf 文件的问题/答案。我相信那些现在已经过时并且不适用,但是如果有人可以指出我目前的 EB 状态,我很乐意接受。

以下一些信息供参考

我正在使用 ACM 来托管我的(自签名)证书。出于我的目的,我在测试时可以使用自签名证书。我不知道这是否会使负载均衡器感到困惑,尽管文档确实提到了使用自签名证书。稍后我将转到适当的证书。

我的 .elasticbeanstalk/config.yaml 看起来像这样

branch-defaults:
  default:
    environment: <name>
deploy:
  artifact: target/<jar name>.jar
global:
  application_name: <App name>
  branch: null
  default_ec2_keyname: <key name>
  default_platform: Java 8
  default_region: eu-west-1
  include_git_submodules: true
  instance_profile: null
  platform_name: null
  platform_version: null
  profile: eb-cli
  repository: null
  sc: null
  workspace_type: Application

我运行创建环境的命令行是

eb create <name> -c <name> --elb-type classic

EB CLI 版本信息

eb --version
EB CLI 3.10.5 (Python 2.7.1)

【问题讨论】:

【参考方案1】:

两种可能的解决方案:

1.)

您是否已将服务器证书上传到 ACM?目前尚不清楚您是使用 ACM 还是需要上传到 ACM 的第 3 方创建的。 http://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html

2.)

检查 Elastic Beanstalk 中配置的优先顺序。

.ebextensions 具有低优先级,因此这些选项值可以被更高优先级的选项设置覆盖。

解决方案是在控制台 GUI 中更新您的证书。导航到 GUI https://aws.amazon.com/ 转到您的弹性 beanstalk gui -> 单击您的环境 -> 单击左侧栏上的配置 -> 单击“负载平衡”旁边的齿轮图标。

现在您将看到 ELB 选项设置列表。从下拉菜单中选择您的证书:“SSL 证书 ID”并保存。

【讨论】:

docs.aws.amazon.com/elasticbeanstalk/latest/dg/…

以上是关于如何使用 CLI 配置 Elastic beanstalk 经典负载均衡器以终止 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CLI 配置 Elastic beanstalk 经典负载均衡器以终止 HTTPS

使用 eb-cli 创建单实例 Elastic Beanstalk 应用程序

如何在aws elastic bean上安装redis和celery

Elastic Beanstalk CLI,如何使用 RDS 实例创建环境?

当您拥有私有 NPM 包时,如何使用 CLI 部署到 Elastic Beanstalk?

如何将 AWS CLI 与 Elastic Beanstalk 一起使用?