将AWS Certificate Manager(ACM证书)与Elastic Beanstalk配合使用

Kir*_*chs 11 ssl-certificate amazon-web-services amazon-elastic-beanstalk aws-certificate-manager

当您拥有通过AWS Certificate Manager颁发的域证书时,如何将该证书应用于Elastic Beanstalk应用程序.

是的,Elastic Beanstalk应用程序是负载平衡的,并且确实有一个与之关联的ELB.

我知道我可以将它直接应用到我自己的ELB上.但我希望通过Elastic Beanstalk应用它,以便将env配置保存到Cloud Formation模板中.

Kir*_*chs 14

我发现,你不能通过弹性beanstalk控制台(至少还没有).但是你仍然可以通过eb cli或aws cli设置它.

使用EB CLI

基本上我们要做的是更新aws:elb:listener设置,您可以在常规选项文档中看到可能的设置.

使用EB CLI非常简单.假设我们已经awsebcli为我们的项目设置了工具,我们可以使用该eb config命令.

它将打开您的默认终端编辑器,并允许您更改写为YAML文件的设置.当您进行更改并保存时,eb configcmd将自动更新Elastic Beanstalk环境的设置.

您需要将以下设置添加到配置文件中:

aws:elb:listener:443:
  InstancePort: '80'
  InstanceProtocol: HTTP
  ListenerEnabled: 'true'
  ListenerProtocol: HTTPS
  PolicyNames: null
  SSLCertificateId: CERTIFICATE_ARN_HERE
Run Code Online (Sandbox Code Playgroud)

将值更改为CERTIFICATE_ARN_HERE您的AMC证书ARN.您可以在AWS Certificate Manager控制台中找到它:

在此输入图像描述

重要提示:您的aws:elb:listener:443设置必须放在设置之上aws:elb:listener:80.否则,环境配置更新将出错.


使用AWS CLI

aws cli通过update-environment命令使用常规工具可以实现相同的目的.

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
Run Code Online (Sandbox Code Playgroud)

注意:通过上述任一方法更新它时,Elastic Beanstalk控制台不会将HTTPS显示为已启用.但负载均衡器将会,也将应用于Cloudformation模板,并保存到EB的配置中.