我使用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配置文件。我相信那些现在已经过时且不适用,但是如果有人可以指出一些有效的东西,考虑到当前的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)
答案 0 :(得分:0)
两种可能的解决方案:
1。)
您是否已将服务器证书上传至ACM?目前还不清楚您是使用ACM还是第三方创建的,需要上传到ACM。 http://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html
2。)
检查Elastic Beanstalk中配置的优先顺序。
.ebextensions的优先级较低,因此较高的优先级选项设置可以覆盖这些选项值。
解决方案是在控制台GUI中更新您的证书。导航到GUI https://aws.amazon.com/ 去你的弹性豆茎gui - &gt;点击你的环境 - &gt;单击左侧栏上的配置 - &gt;单击“负载平衡”旁边的齿轮图标。
现在您将看到ELB选项设置列表。从下拉菜单中选择您的证书:“SSL证书ID”并保存。