【问题标题】:cannot set my elastic load balancer with https in cloudformation无法在 cloudformation 中使用 https 设置我的弹性负载均衡器
【发布时间】:2023-03-07 15:19:01
【问题描述】:

我在为启用 https 协议的 beanstalk 设置 cloudformation 时遇到问题。

这是我的配置设置:

 configurationTemplateUI:
Type: AWS::ElasticBeanstalk::ConfigurationTemplate
DependsOn: BeanstalkAppUI
Properties:
  ApplicationName:
    Ref: BeanstalkAppUI
  Description: AWS ElasticBeanstalk Sample Configuration Template
  OptionSettings:
  - Namespace: aws:autoscaling:asg
    OptionName: MinSize
    Value:
      Ref: MinEc2s
  - Namespace: aws:autoscaling:asg
    OptionName: MaxSize
    Value:
      Ref: MaxEc2s
  - Namespace: aws:elasticbeanstalk:environment
    OptionName: EnvironmentType
    Value: LoadBalanced
  - Namespace: aws:autoscaling:launchconfiguration
    OptionName: InstanceType
    Value:
      Ref: InstanceType
  - Namespace: aws:ec2:vpc
    OptionName: VPCId
    Value:
      Fn::ImportValue: !Sub ${BusinessUnit}-${EnvironmentInfra}-vpc-VpcId
  - Namespace: aws:ec2:vpc
    OptionName: Subnets
    Value:
      Fn::ImportValue: !Sub ${BusinessUnit}-${EnvironmentInfra}-vpc-SubnetIdPrivate${SubnetAvNumber}
  - Namespace: aws:ec2:vpc
    OptionName: ELBSubnets
    Value:
      Fn::ImportValue: !Sub ${BusinessUnit}-${EnvironmentInfra}-vpc-SubnetIdPublic${SubnetAvNumber}
  SolutionStackName:
    Ref: BeanstalkPackInstallationUI

如您所见,我拥有所有值,并且在我运行它时效果非常好。我没有找到任何关于如何使用 https 设置 Elb 的选项。我可以在网络部分的 beanstalk 配置中手动在控制台中执行此操作。

任何人都可以阐明这一点吗? cloudformation有可能吗?

【问题讨论】:

    标签: amazon-web-services amazon-elastic-beanstalk amazon-cloudformation aws-opsworks


    【解决方案1】:

    我建议您查看 aws:elb:listener:listener_port 命名空间。

    以下是一些我认为您可能会觉得有用的选项:

    - Namespace: aws:elb:listener:443
      OptionName: ListenerProtocol
      Value: HTTPS
    - Namespace: aws:elb:listener:443
      OptionName: InstancePort
      Value: 80
    - Namespace: aws:elb:listener:443
      OptionName: InstanceProtocol
      Value: HTTP
    - Namespace: aws:elb:listener:443
      OptionName: SSLCertificateId
      Value: arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012
    

    在本例中,它将 ELB 配置为接受 HTTPS 请求并使用 ACM 证书 arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012 为它们提供服务。 SSL 在 ELB 处终止,并使用标准 HTTP 执行与支持 EC2 实例的连接。

    希望对您有所帮助。

    编辑

    由于某种原因,CloudFormation Elastic Beanstalk 选项在较新样式的 aws:elb:listener:listener_port 选项中没有得到尊重,但提问者能够使用较旧的样式 aws:elb:loadbalancer 选项获得成功

    - Namespace: aws:elb:loadbalancer
      OptionName: LoadBalancerHTTPPort
      Value: '80'
    - Namespace: aws:elb:loadbalancer
      OptionName: LoadBalancerHTTPSPort
      Value: '443'
    - Namespace: aws:elb:loadbalancer
      OptionName: SSLCertificateId
      Value: arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012
    

    【讨论】:

    • 非常感谢,我想我可以直接在 beanstalk cfn 中添加它,还是应该单独创建我的 elb? (因为 beanstalk 会自动创建我的 elb,这很容易)
    • 这应该是 Beanstalk 将应用于它为您创建的 ELB 的一个下降。
    • 运行时一切正常,但是当我在网络面板中检查 beanstalk 配置时,我发现 https 已关闭。有什么想法吗?
    • 所以安全监听器 prot 已关闭且 ssl 证书 ID 尚未被选择
    • 奇怪,beantalk控制台有错误吗?提供的值直接基于docs.aws.amazon.com/elasticbeanstalk/latest/dg/…
    【解决方案2】:

    我相信对于 Application Load Balancer,设置如下:

            - Namespace: aws:elbv2:listener:443
              OptionName: ListenerEnabled
              Value: true
            - Namespace: aws:elbv2:listener:443
              OptionName: Protocol
              Value: HTTPS
            - Namespace: aws:elbv2:listener:443
              OptionName: SSLCertificateArns
              Value: arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012
    

    【讨论】:

      猜你喜欢
      • 2013-03-22
      • 1970-01-01
      • 2013-09-16
      • 2020-09-22
      • 1970-01-01
      • 2016-08-16
      • 2012-08-18
      • 2015-09-23
      • 1970-01-01
      相关资源
      最近更新 更多