当您拥有通过AWS Certificate Manager颁发的域证书时,如何将该证书应用于Elastic Beanstalk应用程序。
是的,Elastic Beanstalk应用程序是负载平衡的,并且确实有一个与之关联的ELB。
我知道我可以直接将它应用到我自己的ELB上。但我想通过Elastic Beanstalk应用它,以便将env配置保存到Cloud Formation模板中。
答案 0 :(得分:14)
我发现,你不能通过弹性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 Certificate Manager控制台中找到它:
重要提示:您的aws:elb:listener:443
设置必须会置于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
注意:当您通过上述任一方法更新它时,Elastic Beanstalk控制台不会将HTTPS显示为已启用。但负载均衡器将会,并且它也将应用于Cloudformation模板,并保存到EB的配置中。
答案 1 :(得分:2)
答案 2 :(得分:0)
您可以使用CloudFormation完全执行此操作;然而,正如Elastic Beanstalk似乎很常见的那样,配置选项在文档中比在构成Elastic Beanstalk的单个组件中更难找到。信息在这里:
但基本上您需要做的是将证书的创建添加到您的模板,然后在OptionSettings
的{{1}}中引用它:
AWS::ElasticBeanstalk::ConfigurationTemplate
答案 3 :(得分:0)
检查您创建证书的区域以及它是否与Elastic Beanstalk区域匹配。我把它们放在不同的区域,所以它不起作用。