当您通过AWS Certificate Manager颁发您的域的证书时,如何将该证书应用于Elastic Beanstalk应用程序。在Elastic Beanstalk中使用AWS证书管理器(ACM证书)
是的,Elastic Beanstalk应用程序是负载均衡的,并且有一个ELB与之关联。
我知道我可以直接将它应用于ELB我的自我。但我想通过Elastic Beanstalk应用它,以便将env配置保存到Cloud Formation模板上。
当您通过AWS Certificate Manager颁发您的域的证书时,如何将该证书应用于Elastic Beanstalk应用程序。在Elastic Beanstalk中使用AWS证书管理器(ACM证书)
是的,Elastic Beanstalk应用程序是负载均衡的,并且有一个ELB与之关联。
我知道我可以直接将它应用于ELB我的自我。但我想通过Elastic Beanstalk应用它,以便将env配置保存到Cloud Formation模板上。
我发现,你不能通过弹性beanstalk控制台(至少现在还没有)。但是,您仍然可以通过eb cli或aws cli来设置它。
基本上我们试图做的是更新aws:elb:listener
设置,您可以在general options文档查看可能的设置。
使用EB CLI非常简单。假设我们已经为我们的项目设置了awsebcli
工具,我们可以使用eb config
命令。
它会打开您的默认终端编辑器,并允许您更改写入YAML文件的设置。当您进行更改并保存时,eb config
cmd将自动更新您的Elastic Beanstalk环境的设置。
您需要将以下设置添加到您的配置文件:
aws:elb:listener:443:
InstancePort: '80'
InstanceProtocol: HTTP
ListenerEnabled: 'true'
ListenerProtocol: HTTPS
PolicyNames: null
SSLCertificateId: CERTIFICATE_ARN_HERE
更改为CERTIFICATE_ARN_HERE
到您的AMC证书ARN值。您可以在AWS证书管理器控制台找到它:
重要:你aws:elb:listener:443
设置MUST放在上面的aws:elb:listener:80
设置。否则,环境配置更新将会出错。
同样可以通过update-environment命令使用一般aws cli
工具来完成。
aws elasticbeanstalk update-environment \
--environment-name APPLICATION_ENV --option-settings \
Namespace=aws:elb:listener:443,OptionName=InstancePort,Value=80 \
Namespace=aws:elb:listener:443,OptionName=InstanceProtocol,Value=HTTP \
Namespace=aws:elb:listener:443,OptionName=ListenerProtocol,Value=HTTPS \
Namespace=aws:elb:listener:443,OptionName=SSLCertificateId,Value=CERTIFICATE_ARN_HERE
注:当通过任一方法更新它上面,弹性魔豆控制台将不会显示HTTPS作为启用。但负载平衡器将会,并且它也将应用于Cloudformation模板并保存到EB的配置中。
你可以用CloudFormation纯粹做到这一点;但是,对于Elastic Beanstalk来说,这似乎很常见,但配置选项在文档中比在构成Elastic Beanstalk的各个组件中更难找到。该信息是在这里:
但基本上你需要做的就是添加证书的创建到您的模板,然后在OptionSettings
在AWS::ElasticBeanstalk::ConfigurationTemplate
引用它:
"Certificate" : {
"Type": "AWS::CertificateManager::Certificate",
"Properties": {
"DomainName": "example.com",
}
},
// ...
"ElasticbeanstalkTemplate": {
"Type": "AWS::ElasticBeanstalk::ConfigurationTemplate",
"Properties": {
"SolutionStackName": "MyEBStack",
"ApplicationName": "MyAppName",
"Description": "",
"OptionSettings": [{
"Namespace": "aws:elb:listener:443",
"OptionName": "InstancePort",
"Value": "80"
}, {
"Namespace": "aws:elb:listener:443",
"OptionName": "InstanceProtocol",
"Value": "HTTP"
}, {
"Namespace": "aws:elb:listener:443",
"OptionName": "ListenerProtocol",
"Value": "HTTPS"
}, {
"Namespace": "aws:elb:listener:443",
"OptionName": "SSLCertificateId",
"Value": {
"Ref": "Certificate"
}
}, /*More settings*/]
检查中您创建证书的区域以及是否与Elastic Beanstalk区域匹配。我让他们在不同的区域,所以它不起作用。
我有EB CLI,并且通过在.ebextensions添加配置文件它总是说试试吧“未找到关键服务器证书......” http://egscr.com/JpcAa8 – Max
@Max你做不要在.ebextensions文件夹中添加配置文件。 eb cli将下载配置文件,并在创建更改时将其重新上传到弹性beanstalk。 IT与增加ebextension不同。 –
我添加了一个.ebextension文件,它工作。 http://prnt.sc/b8k1xe – Max