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

时间:2016-02-03 09:01:44

标签: amazon-web-services ssl-certificate elastic-beanstalk aws-certificate-manager

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

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

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

4 个答案:

答案 0 :(得分:14)

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

使用EB 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控制台中找到它:

enter image description here

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

使用AWS CLI

通过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)

我发现最简单的方法是通过用户控制台更改EB Load Balancer。单击更改并选择新的ACM证书。 enter image description here

当您查看EB配置时,它不会显示,但会设置

答案 2 :(得分:0)

您可以使用CloudFormation完全执行此操作;然而,正如Elastic Beanstalk似乎很常见的那样,配置选项在文档中比在构成Elastic Beanstalk的单个组件中更难找到。信息在这里:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html#command-options-general-elbloadbalancer

但基本上您需要做的是将证书的创建添加到您的模板,然后在OptionSettings的{​​{1}}中引用它:

AWS::ElasticBeanstalk::ConfigurationTemplate

答案 3 :(得分:0)

检查您创建证书的区域以及它是否与Elastic Beanstalk区域匹配。我把它们放在不同的区域,所以它不起作用。