【问题标题】:Using AWS Certificate Manager (ACM Certificate) with Elastic Beanstalk将 AWS Certificate Manager(ACM 证书)与 Elastic Beanstalk 一起使用
【发布时间】:2016-05-12 09:09:48
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    我发现,您无法通过弹性 beantalk 控制台执行此操作(至少目前还没有)。但是您仍然可以通过 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 控制台中找到它:

    重要提示:您的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 的配置中。

    【讨论】:

    • 我已经通过 eb cli 尝试过,并通过在 .ebextensions 下添加配置文件,它总是说“找不到密钥的服务器证书......”egscr.com/JpcAa8
    • @Max 您没有在 .ebextensions 文件夹中添加配置文件。当您创建更改时,eb cli 将下载配置文件并将其重新上传回弹性 beanstalk。 IT 与添加 ebextension 不同。
    • @KirillFuchs 使用 AWS CLI 选项,ec2 的语法是否相同?
    • @Jeboy 不,直接将其添加到负载均衡器的命令会有所不同。
    • @Jordan 如果更新没有出错,那么你们都很好:)。但我应该注意,您现在可以通过控制台将 ACM 证书添加到弹性 beanstalk。
    【解决方案2】:

    我发现最简单的方法是通过用户控制台更改 EB 负载均衡器。单击更改并选择新的 ACM 证书。

    查看EB配置时不会出现,但会设置

    【讨论】:

      【解决方案3】:

      您可以完全使用 CloudFormation 来做到这一点;但是,与 Elastic Beanstalk 似乎很常见的配置选项相比,在文档中找到配置选项比在组成 Elastic Beanstalk 的各个组件中要难得多。信息在这里:

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

      但基本上您需要做的是将证书的创建添加到您的模板中,然后在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*/]
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2016-09-03
          • 1970-01-01
          • 2016-12-14
          • 2016-07-30
          • 2016-06-03
          • 2018-08-13
          • 2017-06-20
          • 2016-10-05
          • 2020-07-17
          相关资源
          最近更新 更多